JavaScript日期對象使我們可以處理日期。
在JavaScript中,您可能想創(chuàng)建一個帶有日歷,火車時刻表或用于設(shè)置約會的界面的網(wǎng)站。
這些應(yīng)用程序需要根據(jù)用戶的當前時區(qū)顯示對應(yīng)時間。
Tue Aug 11 2020 22:34:40 GMT+0800 (中國標準時間)
Date對象是在JavaScript內(nèi)置的對象存儲日期和時間。
它提供了許多用于格式化和管理數(shù)據(jù)的內(nèi)置方法。
日期對象是使用new Date()構(gòu)造函數(shù)創(chuàng)建的。
let now = new Date();// 將變量設(shè)置為當前日期和時間測試看看?/?
默認情況下,JavaScript將使用瀏覽器的時區(qū)并將日期顯示為全文字符串。
有四種創(chuàng)建新日期對象的方法。
您可以使用以下任何語法使用new Date()構(gòu)造函數(shù)創(chuàng)建Date對象。
new Date(); new Date(milliseconds); new Date(dateString); new Date(year, month, day, hours, minutes, seconds, milliseconds);
在new Date()創(chuàng)建與當前日期和時間新的日期對象:
let d = new Date();測試看看?/?
new Date(milliseconds) 會創(chuàng)建一個新的日期對象,該對象為零時間加上毫秒:
let d = new Date(0);測試看看?/?
JavaScript根據(jù)從Unix時間得出的時間戳來理解日期,該時間戳由1970年1月1日午夜以來經(jīng)過的毫秒數(shù)組成。
1970年1月1日加上252 4600000000毫秒大約是2050年1月1日:
let d = new Date(2524600000000);測試看看?/?
new Date(dateString) 創(chuàng)建了一個從日期字符串一個新的日期對象:
let d = new Date("July 30 1992 18:30");測試看看?/?
將創(chuàng)建一個具有指定日期和時間新的日期對象:new Date(year, month, ...)
7個數(shù)字指定年,月,日,小時,分鐘,秒和毫秒(按此順序):
let d = new Date(2019, 0, 26, 10, 40, 30, 0);測試看看?/?
在上面的示例中,我們的秒和毫秒設(shè)置為30和0。
如果創(chuàng)建日期缺少任何數(shù)字,則默認為0。
但是,順序不能更改,因此,如果您決定省略一個數(shù)字,請記住這一點。
您可能還會注意到,一月的月份用0表示,而不是通常的1。
這是因為日期和時間數(shù)字從0開始,就像編程中的大多數(shù)計數(shù)一樣。
JavaScript的月份從0到11。一月是0,十二月是11。
創(chuàng)建Date對象時,可以使用多種方法對其進行操作。
使用日期方法,您可以使用本地時間或UTC(通用或GMT)時間來獲取和設(shè)置日期,年,月,日,時,分,秒和毫秒。
有了對象日期后,就可以使用各種內(nèi)置方法訪問日期的所有組件。
這些方法將返回相對于當?shù)貢r區(qū)的日期的每個部分。
這些方法中的每一個都以get開頭,并將返回相對編號。
下表是Date對象的get方法的表:
方法 | Date/Time | 范圍(Range) |
---|---|---|
getFullYear() | 年 | 根據(jù)本地時間返回指定日期對象的年份(四位數(shù)年份時返回四位數(shù)字:YYYY)。 |
getMonth() | 月 | 根據(jù)本地時間返回指定日期對象的月份(0-11),(0=一月)。 |
getDate() | 第幾天(當月) | 根據(jù)本地時間返回指定日期對象的月份中的第幾天(1-31)。 |
getDay() | 一周中的第幾天 | 根據(jù)本地時間返回指定日期對象的一周中的第幾天(0-6),(0 =星期日)。 |
getHours() | 小時 | 根據(jù)本地時間返回指定日期對象的小時(0-23)。 |
getMinutes() | 分鐘 | 根據(jù)本地時間返回指定日期對象的分鐘(0-59)。 |
getSeconds() | 秒 | 根據(jù)本地時間返回指定日期對象的秒數(shù)(0-59)。 |
getMilliseconds() | 毫秒 | 根據(jù)本地時間返回指定日期對象的毫秒(0-999)。 |
getTime() | 時間戳 | 返回從1970-1-1 00:00:00 UTC(協(xié)調(diào)世界時)到該日期經(jīng)過的毫秒數(shù) 對于1970-1-1 00:00:00 UTC之前的時間返回負值。 |
getFullYear()方法以四位數(shù)的數(shù)字返回日期的年份。
var d = new Date(); d.getFullYear();測試看看?/?
getMonth()方法以數(shù)字(0到11)返回一年中的月份。
var d = new Date(); d.getMonth();測試看看?/?
JavaScript的月份從0到11。一月是0,十二月是11。
在以下示例中,month變量保存月份的名稱:
var arr = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]; var d = new Date(); var month = arr[d.getMonth()];測試看看?/?
getDate()方法以數(shù)字(1-31)形式返回月份中的某天。
var d = new Date(); d.getDate();測試看看?/?
getDay()方法以數(shù)字(0-6)返回星期幾。
var d = new Date(); d.getDay();測試看看?/?
JavaScript將工作日從0到6進行計數(shù)。星期日為0,星期六為6。
在下面的示例中,Today變量保存日期名稱:
var arr = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']; var d = new Date(); var today = arr[d.getDay()];測試看看?/?
getHours()方法將日期的小時數(shù)返回為數(shù)字(0-23)。
var d = new Date(); d.getHours();測試看看?/?
getMinutes()方法將日期的分鐘數(shù)返回為數(shù)字(0-59)。
var d = new Date(); d.getMinutes();測試看看?/?
getSeconds()方法將日期的秒數(shù)返回為數(shù)字(0-59)。
var d = new Date(); d.getSeconds();測試看看?/?
getMilliseconds()方法以數(shù)字(0-999)的形式返回日期的毫秒數(shù)。
var d = new Date(); d.getMilliseconds();測試看看?/?
getTime()方法返回自1970年1月1日以來的毫秒數(shù)。
var d = new Date(); d.getTime();測試看看?/?
一天(24小時)為8,640萬毫秒。
對于上面我們學到的所有get方法,都有一個對應(yīng)的set方法。
如果使用get從日期中檢索特定的組成部分,則使用set來修改日期的組成部分。
下表是Date對象的set方法的表:
方法 | Date/Time | 范圍 |
---|---|---|
setFullYear() | 設(shè)置完整年份 | YYYY |
setMonth() | 設(shè)置月份 | 0-11(0 =一月) |
setDate() | 設(shè)置為某天(當月) | 1-31 |
setDay() | 設(shè)置一周中的某天 | 0-6(0 =星期日) |
setHours() | 設(shè)置小時 | 0-23 |
setMinutes() | 設(shè)置分鐘 | 0-59 |
setSeconds() | 設(shè)置秒數(shù) | 0-59 |
setMilliseconds() | 設(shè)置毫秒 | 0-999 |
setTime() | 設(shè)置時間戳 | 通過指定從 1970-1-1 00:00:00 UTC 開始經(jīng)過的毫秒數(shù)來設(shè)置日期對象的時間 對于早于 1970-1-1 00:00:00 UTC的時間可使用負值。 |
setFullYear()方法設(shè)置日期對象的年份。
var d = new Date(); d.setFullYear(2010);測試看看?/?
setFullYear()方法可以選擇設(shè)置月和日。
var d = new Date(); d.setFullYear(2010, 8, 30);測試看看?/?
setMonth()方法設(shè)置日期對象的月份(0-11)。
var d = new Date(); d.setMonth(11);測試看看?/?
setDate()方法設(shè)置日期對象的月份中的某一天(1-31)。
var d = new Date(); d.setDate(22);測試看看?/?
setHours()方法設(shè)置日期對象的小時數(shù)(0-23)。
var d = new Date(); d.setHours(18);測試看看?/?
setMinutes()方法設(shè)置日期對象的分鐘數(shù)(0-59)。
var d = new Date(); d.setMinutes(32);測試看看?/?
setSeconds()方法設(shè)置日期對象的秒數(shù)(0-59)。
var d = new Date(); d.setSeconds(24);測試看看?/?
setMilliseconds()方法設(shè)置日期對象的毫秒數(shù)(0-999)。
var d = new Date(); d.setMilliseconds(420); document.getElementById('result').innerHTML = d.getMilliseconds();測試看看?/?
setTime()方法將Date對象設(shè)置為自1970年1月1日以來的毫秒數(shù)。
var d = new Date(); d.setTime(1542655292087);測試看看?/?
上面討論的get方法根據(jù)用戶的本地時區(qū)設(shè)置檢索日期組件。
為了更好地指定日期和時間,可以使用getUTC方法,該方法與get方法完全相同,不同之處在于它們根據(jù)UTC(世界標準時間)標準計算時間。
下表是JavaScript Date對象的UTC方法的表:
方法 | Date/Time | 范圍 |
---|---|---|
getUTCFullYear() | 年 | YYYY |
getUTCMonth() | 月 | 0-11(0 =一月) |
getUTCDate() | 某一天(當月) | 1-31 |
getUTCDay() | 一周中的某天 | 0-6(0 =星期日) |
getUTCHours() | 小時 | 0-23 |
getUTCMinutes() | 分鐘 | 0-59 |
getUTCSeconds() | 秒 | 0-59 |
getUTCMilliseconds() | 毫秒 | 0-999 |
要知道 本地時間(local) 和 UTC get方法之間的區(qū)別,我們可以運行以下代碼:
let now = new Date(); // 打印本地時間和UTC時區(qū)(local 和 UTC) document.write(now.getHours()); document.write(now.getUTCHours());測試看看?/?
運行此代碼將打印出當前時間以及UTC時區(qū)的時間。如果您當前處于UTC時區(qū),則運行上述程序所輸出的數(shù)字將相同。
在此示例中,JavaScript顯示當前時間。
要獲取完整的屬性和方法參考,請訪問我們的JavaScript日期參考。
參考部分包含所有Date屬性和方法的描述和示例。