1. 程式人生 > >JavaScript中的Date類型

JavaScript中的Date類型

clas 月份 string 國標 nbsp oda cst 16px 創建

  ECMAScript中的Date類型是在早起Java中的java.util.Date類基礎上構建的。為此,Date類型使用自UTC(Coordinated Universal Time,國際協調時間)1970年1月1日0時開始經過的毫秒數來保存日期。在使用這種數據存儲格式的條件下,Date類型保存的日期能夠精確到1970年1月1日之前或之後的100000000年。

  要創建一個日期對象,使用new操作符合Date構造函數即可。

var now = new Date();

  在調用Date構造函數而不傳參的情況下,新創建的對象自動獲取當前日期和時間。如果想根據特定的日期和時間創建日期對象,必須傳入表示該日期的毫秒數(1970年1月1日0時至該日期止經過的毫秒數)。

  

  ECMAScript提供了兩個方法:Date.parse()和Date.UTC()。

  Date.parse()

  Date.parse()方法接收一個表示日期的字符串參數,然後嘗試根據這個字符串返回相應日期的毫秒數。ECMA-262沒有定義Date.parse()應該支持哪種日期格式,因此這個方法的行為因實現而異。將地區設置為美國的瀏覽器通常都接受下列日期格式:

  ? "月/日/年",如9/7/2017;

  ? "英文月名 日,年",如January 12,2004;

  ? "英文星期幾英文月名 日 年 時:分:秒 時區",如Thur September 7 2017 00:00:00 GMT-0700。

  ? ISO 8601擴展格式YYYY-MM-DDTHH:mm:ss.sssZ(例如 2017-09-07T00:00:00)。只有兼容ECMAScript 5的實現支持這種格式。

  例如,要為2017年9月7日創建一個日期對象,可以使用下面的代碼:

var someDate = new Date(Date.parse("September 7,2017"));

  如果傳入Date.parse()方法的字符串不能表示日期,那麽它會返回NaN。實際上,如果直接將表示日期的字符串傳遞給Date構造函數,也會在後臺調用Date.parse()。例如:

var someDate = new Date("September 7,2017");

  

  Date.UTC()

  Date.UTC()方法同樣也返回表示日期的毫秒數,但它與Date.parse()在構建值時使用不同的信息。Date.UTC()的參數分別是年份、基於0的月份(一月是0,二月是1)、月中的哪一天(1到31)、小時數(0到23)、分鐘、秒以及毫秒數。在這些參數中,只有前兩個參數(年和月)是必需的。如果沒有提供月中的天數,則假設天數為1;如果省略其他參數,則統統假設為0。

//GMT時間2000年1月1日午夜零時
var y2k = new Date(Date.UTC(2000,0));

//GMT時間2005年5月5日下午5:55:55
var allFives = new Date(Date.UTC(2005,4,5,17,55,55));

  跟Date.parse()一樣,Date構造函數也會模仿Date.UTC(),但有一點明顯不同;日期和時間都基於本地時區而非GMT創建。

  ECMAScript 5添加了Date.now()方法,返回表示調用這個方法時的日期和時間的毫秒數。這個方法簡化了使用Date對象分析代碼的工作。

//取得開始時間
var start = Date.now();

//調用函數
doSomething();

//取得停止時間
var stop = Date.now(),result = stop - start;

  支持Date.now()方法的瀏覽器包括IE9+、Firefox 3+、Safari 3+、Opera 10.5和Chrome。在不支持它的瀏覽器中,使用+操作符獲取Date對象的時間戳,也可以達到同樣的目的。

//取得開始時間
var start = +new Date();

//調用函數
doSomething();

//取得停止時間
var stop = +new Date(),result = stop - start;

  日期格式化方法

  Date類型還有一些專門用於將日期格式化為字符串的方法,這些方法如下:

  ? toDateString()——以特定於實現的格式顯示星期幾、月、日和年;

  ? toTimeString()——以特定於實現的格式顯示時、分、秒和時區;

  ? toLocaleDateString()——以特定於地區的格式顯示星期幾、月、日和年;

  ? toLocaleTimeString()——以特定於實現的格式顯示時、分、秒;

  ? toUTCString()——以特定於實現的格式完整的UTC日期。

  Date類型的方法

  ? getTime():返回表示日期的毫秒數;與valueOf()方法返回的值相同

  ? setTime(毫秒):一毫秒數設置日期,會改變整個日期

  ? getFullYear():取得4位數的年份

  ? getUTCFullYear():返回URC日期的4位數年份

  ? setFullYear(年):設置日期的年份。傳入的年份值必須是4位數字。

  ? setUTCFullYear(年):設置UTC日期的年份。傳入的年份值必須是4位數字。

  ? getMonth():返回日期中的月份,其中0表示一月,11表示十二月。

  ? getUTCMonth():返回UTC日期中的月份,其中0表示一月,11表示十二月。

  ? setMonth(月):設置日期的月份。傳入的月份值必須大於0,超過11則增加年份

  ? setUTCMonth(月):設置UTC日期的月份。傳入的月份值必須大於0,超過11則增加年份

  ? getDate():返回日期月份中的天數(1到31)

  ? getUTCDate():返回UTC日期月份中的天數(1到31)

  ? setDate(日):設置日期月份中的天數。如果傳入的值超過了該月中應有的天數,則增加月份。

  ? setUTCDate(日):設置UTC日期月份中的天數。如果傳入的值超過了該月中應有的天數,則增加月份。

  ? getDay():返回日期中星期的星期幾(其中0表示星期日,6表示星期六)

  ? getUTCDay():返回UTC日期中星期的星期幾(其中0表示星期日,6表示星期六)

  ? getHours():返回日期中的小時數(0到23)

  ? getUTCHours():返回UTC日期中的小時數(0到23)

  ? setHours(時):設置日期中的小時數。傳入的值超過了23則增加月份中的天數

  ? setUTCHours(時):設置UTC日期中的小時數。傳入的值超過了23則增加月份中的天數

  ? getMinutes():返回日期中的分鐘數(0到59)

  ? getUTCMinutes():返回UTC日期中的分鐘數(0到59)

  ? setMinutes(分):設置日期中的分鐘數。傳入的值超過59則增加小時數

  ? setUTCMinutes(分):設置UTC日期中的分鐘數。傳入的值超過59則增加小時數

  ? getSeconds():返回日期中的秒數(0到59)

  ? getUTCSeconds():返回UTC日期中的秒數(0到59)

  ? setSeconds(秒):設置日期中的秒數。傳入的值超過59則增加分鐘數

  ? setUTCSeconds(秒):設置UTC日期中的秒數。傳入的值超過59則增加分鐘數

  ? getMilliseconds():返回日期中的毫秒數

  ? getUTCMilliseconds():返回UTC日期中的毫秒數

  ? setMilliseconds(毫秒):設置日期中的毫秒數

  ? setUTCMilliseconds(毫秒):設置UTC日期中的毫秒數

  ? getTimezoneOffset():返回本地時間與UTC時間相差的分鐘數。例如,美國東部標準時間返回300;中國標準時間返回-480。

JavaScript中的Date類型