淺析Date對象及常用時間格式

2018-06-09 17:57 更新

Date(時間)對象是JavaScript在瀏覽器環(huán)境的一個內置對象,用于處理客戶端時間邏輯。本篇文章將會簡單的介紹Date對象,重點是介紹Web開發(fā)中涉及到時間時常用的幾種時間字符串格式。

Date對象

關于Date對象詳細的文檔說明,請參閱Mozilla開發(fā)者中心。

這里稍微提兩點,Data對象中,除了3個比較特殊方法(這里我們可以將其理解成靜態(tài)方法)之外,其他的方法都是實例方法。

  • Date.UTC(),接受一個合法的時間字符串或者多個日期參數,返回此時間距1970-1-1 00:00:00的毫秒數。
  • Date.now(),返回方法調用時刻距1970-1-1 00:00:00的毫秒數。
  • Date.parse(),這個方法比較靈活,可以接受多種參數,返回參數所代表的時間點距1970-1-1 00:00:00的毫秒數。

此外,Date對象的構造方法接受參數的形式非常靈活,在實際使用要活學活用。

好了,其他的內容就可以直接參考MDN文檔了。

各種時間格式

上述提到Date對象的構造函數或者部分實例方法可以接受一個合法的時間格式字符串作為參數。這里我們先來對常見的幾種時間格式做一下科普。

GMT時間

先來段網上的關于GMT時間的段子,

十七世紀,格林威治皇家天文臺為了海上霸權的擴張計劃而進行天體觀測。1675年舊皇家觀測所(Old Royal Observatory)正式成立,到了1884年決定以通過格林威治的子午線作為劃分地球東西兩半球的經度零度。觀測所門口墻上有一個標志24小時的時鐘,顯示當下的時間,對全球而言,這里所設定的時間是世界時間參考點,全球都以格林威治的時間作為標準來設定時間,這就是我們耳熟能詳的「格林威治標準時間」(Greenwich Mean Time,簡稱G.M.T.)的由來,標示在手表上,則代表此表具有兩地時間功能,也就是同時可以顯示原居地和另一個國度的時間。

再來給出wiki上定義,其實GMT時間是全球24時區(qū)劃分的標準。北京時間就是處于東八區(qū)上,一般的北京時間會被表示成localtimestring + GMT+0800,如下,

Wed Mar 11 2015 18:54:49 GMT+0800 (中國標準時間)

從wiki中,我們可以知道,GMT是根據地球自轉及格林威治子午線來調時的。但是由于種種原因,這種計時是存在誤差的?,F(xiàn)在的標準時間,是由原子鐘報時的協(xié)調世界時(UTC)。

UTC時間

首先給出其定義。

UTC時間,又稱為世界標準時間或者世界協(xié)調時間,簡稱UTC(Coordinated Universal Time),是最主要的世界時間標準,其以原子時秒長為基礎,在時刻上盡量接近于格林威治時間(其實UTC時間比GMT時間要精確)。

ISO時間

我們這里說的ISO時間其實指的是國際標準化組織ISO制定的ISO 8601標準,是日期和時間的表示方法,全稱為《數據存儲和交換形式·信息交換·日期和時間的表示方法》,目前是第三版ISO8601:2004以替代第一版ISO8601:1988與第二版ISO8601:2000。

關于ISO 8601更多的內容請參見wiki。

其他的時間格式

除了上述提到的在web開發(fā)中最常用的三種時間格式之外,還有日常生活中常見的夏時制(DST)、北京時間(CST)中部標準時間等等。不過因為這些時間格式在web開發(fā)(或者說展現(xiàn))中并不常用,這里我們就一筆帶過,不再多作介紹。

各時間格式之間轉化

我們在瀏覽器書寫如下代碼即可得帶一個時間對象,

var d = new Date();
console.log(d);

這里我們沒有給Date的構造函數傳遞任何參數,得到的將是封裝當前時間的一個時間對象。

上述代碼在Chrome Console中執(zhí)行的結果如下,

Wed Mar 11 2015 19:14:51 GMT+0800 (中國標準時間)

這其實是一種山寨的GMT時間格式字符串,中國標準時間其實就是北京時間。

我們繼續(xù)在console中執(zhí)行下面的代碼,

d.toGMTString();
d.toUTCString();
d.toISOString();

結果如下,

"Wed, 11 Mar 2015 11:14:51 GMT"
"Wed, 11 Mar 2015 11:14:51 GMT"
"2015-03-11T11:14:51.182Z"

從結果可以看出toGMTString()toUTCString()得到的結果是一致。前面我們也說過,UTC時間其實就是更加精確的GMT時間。

至于toISOString()得到的時間字符串是有一般性規(guī)律的,其格式一般如下,

yyyy-mm-ddThh:mm:ss.000Z

使用字母TZ鏈接日期和時間,且Z前面還會有三位數,這三位數是時間對象對應的毫秒數。

由上面我們可以看出,在進行web開發(fā)時,如果涉及到日期時間的相關展示時,我們應該選擇哪一種時間格式作為數據傳輸的格式呢?答案無疑是ISO時間格式,因為它具有一定的規(guī)律,且都是有數字組成的基本格式。

參考列表


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號