### Date類型
* * * * *
> ECMAScript中的Date類型是在早期Java中的java.util.Date類基礎上構建的,為此,Date類型使用自UTC(國際協調時間)1970年1月1日午夜零時開始經過的毫秒數來保存日期。在這種數據存儲格式下,Data類型保存的日期能夠精確到1970年1月1日之前或者之后的100000000年(可以數一數幾個0, )
要創建一個日期對象,使用new操作符合Date構造函數即可,如下所示:
~~~
let now = new Date()
~~~
> 在調用Date()構造函數而不傳參的情況下,新建的對象自動獲取當前日期和時間,如果根據特定的日期和時間創建日期對象,必須傳入表示該日期的毫秒數(即從UTC時間1970年1月1日午夜起至該日期經過的毫秒數)。為了簡化這些操作,ECMAScript提供了兩個方法:Date.parse()和Date.UTC()。
> 其中Date.parse()方法接收一個表示日期的字符串參數,然后嘗試根據這個字符串返回相應的日期毫秒數,但是ECMA并沒有規定這個方法應該支持那種日期,因此這個方法的行為實現是根據地區而異的,如果傳入的字符串不能表示日期,那么他會返回一個NaN,實際上如果直接將表示日期的字符串傳給Date函數也會調用Date.parse()方法。
> Date.UTC()方法同樣也返回表示日期的毫秒數,但他與Date.parse()在構建值時使用不同的信息,Date.UTC()對參數分別是年份/基于0的月份(一月是0,二月是1,以此類推)/月中的那一天(1 - 31)/小時數(0 - 23) /分鐘/秒/毫秒。在這些參數中,只有年和月是必須的,沒有提供天,則假設天數為1;如果省略其他參數,則統統假設為0;如果第一個參數是數值,那么Date()函數也會模仿Date.UTC()方法,但有一點不同的是,Date()函數生成的時間是本地時間,而Date.UTC()方法生成的時間是GMT時間,如下:
~~~
let y = new Date(2000,0)
// 本地時間的2000年1月1日午夜0時
let y = new Date(Date.UTC(2000,0))
// GMT時間的2000年1月1日午夜0時
let a = new Date(2005,4,5,14,13,15)
// 本地時間的2005年4月5日14時13分15秒
let a = new Date(Date.UTC(2005,4,5,14,13,15))
// GMT時間的2005年4月5日14時13分15秒
~~~
> ES5添加了一個Date.now()方法,返回這個方法調用時的系統時間,如下:
~~~
let a = Data.now()
// a就是你的系統時間
~~~