首頁  >  文章  >  web前端  >  javascript中Date類別的詳解(程式碼範例)

javascript中Date類別的詳解(程式碼範例)

不言
不言原創
2018-09-12 17:24:031951瀏覽

這篇文章帶給大家的內容是關於javascript中Date類別的詳解(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

Date 是JS 中的重要的內建對象,其實例主要用於處理時間和日期,其時間基於1970-1-1 (世界標準時間)起的毫秒數,時間戳長度為13位元(不同於Unix 時間戳的長度10 位元)。對於日期和時間,我們有無數個使用場景,因此需要特別注意一些細節和約定。

1. 建構子

透過new Date() 可以進行實例化,得到一個Date 物件實例,值得注意的是如果直接執行Date() ,將得到一個時間字串。

new Date();
new Date(value);
new Date(dateString);
new Date(year, month[, day[, hour[, minutes[, seconds[, milliseconds]]]]]);

95712e0b0bc62c64b1fddfac486f9cb8

其中對建構子的參數說明(參考MDN ):

  • 如果沒有輸入任何參數,則Date的建構器會依據系統設定的目前時間來建立一個Date物件。

  • 如果提供了至少兩個參數,其餘的參數均會預設為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物件(i.e., 不使用 new 運算元)會傳回一個代表目前日期和時間的字串。

2. 空值處理

// 以chrome为例
new Date();
// Mon Oct 23 2017 23:38:02 GMT+0800 (CST)

new Date(false);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date(0);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date(null);
// Thu Jan 01 1970 08:00:00 GMT+0800 (CST)

new Date('');
// Invalid Date

new Date(undefined);
// Invalid Date

3. 特別提示

[Firefox]

不支援帶'-' 的完整時間,例如new Date('2012-07-08 00:00:00') 為無效的值,而new Date('2012-07-08') 是正確的值。

[month]

  • new Date(year, month, ……) 中的month從0開始計算

4. 值的邊界

不同執行環境下的邊界值有差異, Chrome 下甚至連負值都能支援。在實際生產環境中,不僅需要考慮時間的展示,還需要考慮其儲存、運算等,因此在特定的場景下,我們需要盡可能考慮到資料庫和瀏覽器中 Date 的有效範圍。

以資料庫Derby 儲存時間為例,其邊界為:

##最大的時間24:00:00最小的時間戳記#0001-01-01-00.00.00.000000 #最大的時間戳9999-12-31-23.59.59.999999

mysql 中,其範圍定義為1000-01-01to9999-12-31;
js 中,時間戳的最小值為-8640000000000000 即西元前271,821 年4 月20 日,最大值為864000000000000規範中時間範圍為 1970/1/1 前後 100,000,000 天。

5. 2038 年蟲

聽說,2038 年後時間戳不夠用了。

在電腦應用上,2038年問題可能會導致某些軟體在2038年無法正常運作。所有使用UNIX時間表示時間的程序都會受其影響,因為它們以自1970年1月1日經過的秒數(忽略閏秒)來表示時間。這種時間表示法在類Unix(Unix-like)作業系統上是一個標準,並會影響以其C程式語言開發給其他大部份作業系統使用的軟體。在大部份的32位元作業系統上,此「time_t」資料模式使用一個有正負號的32位元整數(signedint32)儲存計算的秒數。依照此「time_t」標準,在此格式能被表示的最後時間是2038年1月19日03:14:07,星期二(UTC)。超過此一瞬間,時間將會被掩蓋(wrap around)且在內部被表示為一個負數,並造成程序無法工作,因為它們無法將此時間識別為2038年,而可能會依個別實作而跳回1970年或1901年。錯誤的計算及動作可能因此產生。

7. 函式庫

  • moment - 重量級時間處理函式庫,支援時間解析、格式化、運算等,功能強大,支援瀏覽器和Node.js,壓縮後體積約為16.3 KB

  • date-fns - 較moment 更輕量的事件處理庫,體積更小

  • ##dayjs - 更輕量級的moment.js
  • 相關推薦:

javascript中封裝Date日期類別的範例程式碼分享


javascript DOM的範例程式碼詳解

#

說明 # 邊界值
的最小日期 0001-01-01
最大的日期 9999-12-31
最小的時間 00:00:00

以上是javascript中Date類別的詳解(程式碼範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn