Javascript日期時間表現形式互轉

來源:互聯網
上載者:User

標籤:

在一門語言裡,一個日期時間一定有3種表現形式,字串(如2010-11-11 05:07:08),Long型(一般是1970年1月1日至今的毫秒數),內建對象(在Javascript中就是Date);

那麼日期時間操作很常用的一個就是上述三種表現形式的互轉和格式化(各種格式的字串);
moment是Javascript的一個日期時間庫,使用它可以很方便的實現上述三種表現形式的互轉和字串表現形式的格式化。

日期時間類型的三種表現形式,字串是給人讀的,Long在傳遞資訊時速度更快,內建對象起到一個中轉的角色。

1.字串轉內建對象

new Date(moment("2010-11-11 05:07:08","YYYY-MM-DD HH:mm:ss"))new Date(moment("12-25-1995", "MM-DD-YYYY"))new Date(moment("29-06-1995", ["MM-DD-YYYY", "DD-MM", "DD-MM-YYYY"]))new Date(moment("2010-01-01T05:06:07", moment.ISO_8601))

可以這麼轉的原因:
moment的toString方法預設返回一個”ddd MMM DD YYYY HH:mm:ss [GMT]ZZ”,這種格式的字串,而這個格式恰恰是Date對象的預設返回格式,所以Date對象可以認出這個字串。如下:

2.Long型轉內建對象
這個功能一般是語言的內建對象要內建,作為內建對象的一個構造方法存在。

上述兩個操作可以將任意格式的時間字串和Long型轉成內建對象了,下面是把內建對象轉回去。

3.內建對象轉為任意格式字串
事實上,Date對象有有八個內建方法,用於輸出為字串格式,分別為:
1)toString(),把 Date 對象轉換為字串。格式如1所述。
2)toTimeString(),把 Date 對象的時間部分轉換為字串,格式如1所述,取時間部分。
3)toDateString(),把 Date 對象的日期部分轉換為字串,格式如1所述,取日期部分。
4)toGMTString(),擷取格林尼治時間字串
5)toUTCString(),根據世界時,把 Date 對象轉換為字串。
6)toLocaleString(),根據本地時間格式,把 Date 對象轉換為字串。
7)toLocaleTimeString(),根據本地時間格式,把 Date 對象的時間部分轉換為字串。
8)toLocaleDateString(),根據本地時間格式,把 Date 對象的日期部分轉換為字串。
儘管Javascript的Date對象中內建提供了這些輸出為字串的方法,但是這些字串不是我們來控制格式的,因此如果我們需要我們自己定製的特殊格式,那麼又該怎麼辦呢?
moment提供了強大的format函數,可以將時間display成任意合法格式;

moment(new Date()).format("dddd, MMMM Do YYYY, h:mm:ss a"); moment(new Date()).format("ddd, hA");  

4.內建對象轉為Long型
跟Long型轉為內建對象一樣,這個一般也是內建對象提供的功能。Javascript也不例外,Date內建對象提供了getTime方法,返回 1970 年 1 月 1 日至今的毫秒數。Date還有一個靜態方法UTC(),它可以根據世界時返回 1970 年 1 月 1 日 到指定日期的毫秒數,文法如下

Date.UTC(year,month,day,hours,minutes,seconds,ms)

okay,到這其實就可以結束了。
但是,moment作為一個重量級的Javascript日期時間庫,提供了很強大的日期時間操作功能。它其實是對Javascript內建對象Date的封裝,所以它可以代替Date對象的中轉角色,實現字串和Long型的互轉。
5.任一字元串轉Long型
我們知道,Date對象的getTime返回1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,這個其實是UNIX時間戳記的計算方式,所以moment提供了一個名為unix的函數,直接擷取一個時間的Long型值。
有了這個函數,加上moment本身強大的格式化功能,就可以直接將任一字元串轉為Long型了,如下:

moment("2010-11-11 05:07:08","YYYY-MM-DD HH:mm:ss").unix()moment("12-25-1995", "MM-DD-YYYY").unix()moment("29-06-1995", ["MM-DD-YYYY", "DD-MM", "DD-MM-YYYY"]).unix()moment("2010-01-01T05:06:07", moment.ISO_8601).unix()

6.Long型轉為任一字元串
在3中已經看到了format函數可以將輸出字串格式化為任意合法的格式,這樣就okay了。如下:

moment(1000000).format("dddd, MMMM Do YYYY, h:mm:ss a")moment(10000000000).format("YYYY-MM-DD hh:mm:ss a");  

總結:你只需要看5和6就可以了。

Javascript日期時間表現形式互轉

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.