原生JS:Date對象詳細參考

Date對象:基於1970年1月1日(世界標準時間)起的毫秒數

本文參考MDN作的詳細整理,方便你們參考MDN瀏覽器

構造函數:

  1. new Date(); 依據系統設置的當前時間來建立一個Date對象。
  2. new Date(value); value表明自1970年1月1日00:00:00 (世界標準時間) 起通過的毫秒數。
  3. new Date(dateString); dateString表示日期的字符串值。該字符串應該能被 Date.parse() 方法識別(符合 IETF-compliant RFC 2822 timestamps 或 version of ISO8601)
  4. new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);
    year 1900 年後的某一年份,表明年份的整數值。爲了不2000年問題最好指定4位數的年份; 使用 1998, 而不要用 98.
    month 0 到 11 之間的一個整數,表示月份(1月)到11(12月)。
    day 1 到 31 之間的一個整數,表示某月當中的第幾天。
    hour 0 到 23 之間的一個整數,表示小時。
    minute 0 到 59 之間的一個整數,表示分鐘。。
    second 0 到 59 之間的一個整數,秒數。
    millisecond 0 到 999 之間的一個整數,表示時間的毫秒部分的整數值。

若是提供了至少兩個參數,其他的參數均會默認設置爲1(若是沒有提供day參數)或者0。函數

JavaScript的時間是由世界標準時間(UTC)1970年1月1日開始,用毫秒計時,一天由86,400,000毫秒組成。Date對象的範圍是-100,000,000天至100,000,000天(等效的毫秒值)。性能

JavaScript的Date對象爲跨平臺提供了統一的行爲。時間屬性能夠在不一樣的系統中表示相同的時刻,而若是使用了本地時間對象,則反映當地的時間。prototype

JavaScript 的Date對象提供了數個UTC時間的方法,也相應提供了當地時間的方法。UTC,也就是咱們所說的格林威治時間,指的是time中的世界時間標準。而當地時間則是指執行JavaScript的客戶端電腦所設置的時間。code

以一個函數的形式來調用JavaScript的Date對象(不使用 new 操做符)會返回一個表明當前日期和時間的字符串。而不是一個日期對象。另外,不像其餘JavaScript 類型,Date 對象沒有字面量格式。orm

當Date做爲構造函數調用並傳入多個參數時,若是數值大於合理範圍時(如月份爲13或者分鐘數爲70),相鄰的數值會被調整。好比 new Date(2013, 13, 1)等於new Date(2014, 1, 1),它們都表示日期2014-02-01(注意月份是從0開始的)。其餘數值也是相似,new Date(2013, 2, 1, 0, 70)等於new Date(2013, 2, 1, 1, 10),都表示時間2013-03-01T01:10:00。對象

當Date做爲構造函數調用並傳入多個參數時,所定義參數表明的是當地時間。若是須要世界協調時,使用 new Date({{jsxref("Date.UTC()", "Date.UTC(...)")}}) 和相同參數ip

屬性:

Date.prototype :容許爲 Date 實例對象添加屬性。
Date.length:值是 7。這是該構造函數可接受的參數個數。jsx

Date靜態方法:

Date.now() IE9

返回自 1970-1-1 00:00:00 UTC (時間標準時間)至今所通過的毫秒數,類型爲Number。
在支持 Web Performance API 的高精細度(high-resolution)時間功能的瀏覽器中,window.performance.now 提供的所通過的時間比 Date.now 更可靠和精確。
兼容舊版瀏覽器:字符串

if (!Date.now) {
  Date.now = function now() {
    return new Date().getTime();
  };
}
Date.parse()

解析一個表示日期的字符串,並返回從 1970-1-1 00:00:00 所通過的毫秒數。若是參數不能解析爲一個有效的日期,則返回NaN。
parse 方法接受一個日期字符串(例如 "Dec 25, 1995"),並返回從1970-1-1 00:00:00 UTC到該日期字符串所表示日期的毫秒數。該方法在基於字符串值設置日期值時頗有用,例如結合使用setTime() 方法和 Date() 構造函數。
該方法能夠接受符合 RFC2822 / IETF 日期語法 (RFC2822 Section 3.3) 的字符串,如 "Mon, 25 Dec 1995 13:30:00 GMT"。該方法可以理解美國大陸時區的縮寫,可是爲了更通用,應該使用時區偏移,如 "Mon, 25 Dec 1995 13:30:00 +0430" (格林威治的子午線向東偏移4小時30分鐘)。若是沒有指定時區,默認使用本地時區。
GMT 和 UTC 被看做相等。 若是 RFC2822 Section 3.3 格式中不包含時區信息時,會以本地時區來解析日期字符串。
因爲在解析日期字符串時存在誤差會致使結果不一致,所以推薦始終手動解析日期字符串,特別是不一樣的ECMAScript實現會把諸如「2015-10-12 12:00:00」的字符串解析爲NaN,UTC或者本地時間。
另外,日期時間字符串也可使用 ISO 8601 格式。例如,"2011-10-10" (僅日期)或 "2011-10-10T14:48:00" (日期和時間)可以做爲參數被傳遞和解析

Date.UTC()

接受和構造函數最長形式的參數相同的參數(從2到7),並返回從 1970-01-01 00:00:00 UTC 開始所通過的毫秒數,類型爲Number。
你應該指定一個完整格式的年份,如 1998
Date.UTC 方法使用協調世界時 代替 本地時間。
Date.UTC 方法返回一個時間數值,而不是一個日期對象。
若是有一個指定的參數超出其合理範圍,則 UTC 方法會經過更新其餘參數直到該參數在合理範圍內。例如,爲月份指定 15,則年份將會加 1,而後月份將會使用 3。

Date 實例方法:

根據本地時間的方法
獲取時間方法:

Date.prototype.getDate()
根據本地時間返回指定日期對象的月份中的第幾天(1-31)。
Date.prototype.getDay()
根據本地時間返回指定日期對象的星期中的第幾天(0-6)。
Date.prototype.getFullYear()
根據本地時間返回指定日期對象的年份,該方法返回一個1000 到 9999的四位數字年份,請使用該方法代替 getYear 方法。
Date.prototype.getHours()
根據本地時間返回指定日期對象的小時(0-23)。
Date.prototype.getMilliseconds()
根據本地時間返回指定日期對象的微秒(0-999)。
Date.prototype.getMinutes()
根據本地時間返回指定日期對象的分鐘(0-59)。
Date.prototype.getMonth()
根據本地時間返回指定日期對象的月份(0-11)。
Date.prototype.getSeconds()
根據本地時間返回指定日期對象的秒數(0-59)。
Date.prototype.getTime()
返回從1970-1-1 00:00:00 UTC(協調世界時)到該日期通過的毫秒數,Number類型,對於1970-1-1 00:00:00 UTC以前的時間返回負值。這個方法的功能和 valueOf() 方法同樣。
Date.prototype.getTimezoneOffset()
返回協調世界時(UTC)相對於當前時區的時間差值,單位爲分鐘。
時區誤差(time-zone offset)表示協調世界時(UTC)與本地時區之間的差值,單位爲分鐘。須要注意的是若是本地時區晚於協調世界時,則該差值爲正值,若是早於協調世界時則爲負值

設置時間方法:如下方法若是有一個參數超出了合理的範圍,該方法會更新其餘參數值,日期對象的日期值也會被相應更新

Date.prototype.setDate(value)
根據本地時間爲指定的日期對象設置月份中的第幾天。
若是 value 超出了月份的合理範圍,setDate 將會相應地更新 Date 對象。例如,若是爲 value 指定0,那麼日期就會被設置爲上個月的最後一天,能夠爲負數。
Date.prototype.setFullYear(yearValue[, monthValue[, dayValue]])
根據本地時間爲指定日期對象設置完全年份(四位數年份是四個數字)。
yearValue指定年份的整數值,例如1995。
monthValue一個0到11之間的整數值,表示從一月到十二月。
dayValue一個1到31之間的整數值,表示月份中的第幾天。若是你指定了 dayValue 參數,就必須同時指定 monthValue。
若是沒有指定 monthValue 和dayValue 參數,將會使用 getMonth 和getDate 方法的返回值
Date.prototype.setHours(hoursValue[, minutesValue[, secondsValue[, msValue]]])
根據本地時間爲指定日期對象設置小時數。若是不指定 minutesValue,secondsValue 和 msValue 參數,則會使用getMinutes(),getSeconds() 和getMilliseconds() 方法的返回值。
參數超出了合理範圍,自動調整更新
Date.prototype.setMilliseconds()
根據本地時間爲指定日期對象設置毫秒數。
Date.prototype.setMinutes()
根據本地時間爲指定日期對象設置分鐘數。
Date.prototype.setMonth()
根據本地時間爲指定日期對象設置月份。
Date.prototype.setSeconds()
根據本地時間爲指定日期對象設置秒數。
Date.prototype.setTime(timeValue)
經過指定從 1970-1-1 00:00:00 UTC 開始通過的毫秒數來設置日期對象的時間,對於早於 1970-1-1 00:00:00 UTC的時間可以使用負值。例:sameBigDay.setTime(newBigDay.getTime());

以世界時爲標準的方法:

Date.prototype.getUTCDate()
以世界時爲標準,返回一個指定的日期對象是一個月中的第幾天,返回 1 到 31 的整數值
Date.prototype.getUTCDay()
以世界時爲標準,返回一個指定的日期對象爲一星期中的第幾天,其中 0 表明星期天。
Date.prototype.getUTCFullYear()
以世界時爲標準,返回一個指定的日期對象的年份,該方法返回一個1000 到 9999的四位數字年份
Date.prototype.getUTCHours()
以世界時爲標準,返回一個指定的日期對象的小時數。
Date.prototype.getUTCMilliseconds()
以世界時爲標準,返回一個指定的日期對象的毫秒數。.
Date.prototype.getUTCMinutes()
以世界時爲標準,返回一個指定的日期對象的分鐘數.
Date.prototype.getUTCMonth()
以世界時爲標準,返回一個指定的日期對象的月份,它是從 0 開始計數的(0 表明一年的第一個月).
Date.prototype.getUTCSeconds()
以世界時爲標準,返回一個指定的日期對象的秒數.
Date.prototype.setUTCDate()
根據世界時設置 Date 對象中月份的一天 (1 ~ 31)。
Date.prototype.setUTCFullYear()
根據世界時設置 Date 對象中的年份(四位數字)。
Date.prototype.setUTCHours()
根據世界時設置 Date 對象中的小時 (0 ~ 23)。
Date.prototype.setUTCMilliseconds()
根據世界時設置 Date 對象中的毫秒 (0 ~ 999)。
Date.prototype.setUTCMinutes()
根據世界時設置 Date 對象中的分鐘 (0 ~ 59)。
Date.prototype.setUTCMonth()
根據世界時設置 Date 對象中的月份 (0 ~ 11)。
Date.prototype.setUTCSeconds()
根據世界時設置 Date 對象中的秒鐘 (0 ~ 59)

日期格式轉換:

Date.prototype.toDateString() 以人類易讀(human-readable)的形式返回該日期對象日期部分的字符串。 Date.prototype.toISOString() IE9 返回一個 ISO(ISO 8601 Extended Format)格式的字符串: YYYY-MM-DDTHH:mm:ss.sssZ。時區老是UTC(協調世界時),加一個後綴「Z」標識 Date.prototype.toJSON() 返回一個 JSON 格式字符串(使用 toISOString()),表示該日期對象的值。默認狀況下,這個方法經常使用於 JSON序列化Date對象。。爲了在 JSON.stringify() 方法中使用。 Date.prototype.toLocaleDateString() 返回一個表示該日期對象日期部分的字符串,該字符串格式與系統設置的地區關聯(locality sensitive)。其它同toLocaleTimeString() Date.prototype.toLocaleString() 返回一個表示該日期對象的字符串,該字符串與系統設置的地區關聯。覆蓋了 Object.prototype.toLocaleString() 方法。其它同toLocaleTimeString() Date.prototype.toLocaleTimeString([locales [, options]]) 返回一個表示該日期對象時間部分的字符串,該字符串格式與系統設置的地區關聯(locality sensitive)。 方法返回該日期對象日期部分的字符串,該字符串格式因不一樣語言而不一樣。新增的參數(IE11,而Safari無) locales 和 options 使程序可以指定使用哪一種語言格式化規則,容許定製該方法的表現(behavior)。在舊版本瀏覽器中, locales 和 options 參數被忽略,使用的語言環境和返回的字符串格式是各自獨立實現的 查看瀏覽器兼容性小節,看下哪些瀏覽器支持 locales 和 options 參數,還能夠參看例子: 檢測 locales 和 options 參數支持狀況。 沒有指定語言環境(locale)時,返回一個使用默認語言環境和格式設置(options)的格式化字符串。 locales 和 options 參數不是全部的瀏覽器都支持。爲了檢測一種實現環境(implementation)是否支持它們,可使用不合法的語言標籤,若是實現環境支持該參數,則會拋出一個 RangeError 異常,反之會忽略參數。 性能:當格式化大量日期時,最好建立一個 Intl.DateTimeFormat 對象,而後使用該對象 format 屬性提供的方法。 Date.prototype.toString() 返回一個表示該日期對象的字符串,老是返回一個美式英語日期格式的字符串。覆蓋了Object.prototype.toString() 方法。 Date.prototype.toTimeString() 以人類易讀格式返回日期對象時間部分的字符串。 Date.prototype.toUTCString() 把一個日期對象轉換爲一個以UTC時區計時的字符串。 Date.prototype.valueOf() 返回從1970年1月1日0時0分0秒(UTC,即協調世界時)到該日期對象所表明時間的毫秒數。該方法的功能和 Date.prototype.getTime() 方法同樣,覆蓋了 Object.prototype.valueOf() 方法。

相關文章
相關標籤/搜索