DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> 原生JS:Date對象全面解析
原生JS:Date對象全面解析
編輯:關於JavaScript     

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對象為跨平台提供了統一的行為。時間屬性可以在不同的系統中表示相同的時刻,而如果使用了本地時間對象,則反映當地的時間。

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

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

當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(...)")}}) 和相同參數

屬性:

Date.prototype :允許為 Date 實例對象添加屬性。

Date.length:值是 7。這是該構造函數可接受的參數個數。

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() 方法。

以上這篇原生JS:Date對象全面解析就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved