創(chuàng)建一個日期對象:
var now = new Date();
調(diào)用Date構(gòu)造函數(shù)而不傳遞參數(shù)捺疼,則新創(chuàng)建的對象自動獲得當前日期和時間疏虫。
如果想根據(jù)特定的日期和時間創(chuàng)建日期對象永罚,則需傳入表示該日期的毫秒數(shù)(即從UTC時間1970年1月1日午夜起至該日期止經(jīng)過的毫秒數(shù))。
ECMAScript為簡化此過程提供了兩種方法:
Date.parse():
param:表示日期的字符串參數(shù)
return:根據(jù)字符串返回相應(yīng)日期的毫秒數(shù)卧秘;若傳入的字符串不能表示日期呢袱,則返回NaN
字符串格式:
- “月/日/年”,
new Date(Date.parse("6/13/2014"));
- “英文月名 日翅敌,年”羞福,
new Date(Date.parse("January 12,2004"));
- “英文星期幾 英文名月名 日 年 時:分:秒 時區(qū)”,
new Date(Date.parse("Tue May 25 2004 00:00:00 GMT-0700"));
- ISO 8601擴展模式 YYYY-MM-DDTHH:mm:ss.sssZ蚯涮,
new Date(Date.parse("2004-05-25T00:00:00"));
(只有兼容ECMAScript 5的實現(xiàn)支持此格式)
var someDate = new Date(Date.parse("May 25,2004"));
//若直接傳字符串治专,則會在后臺調(diào)用Date.parse()
var someDate = new Date("May 25,2004");
Date.UTC():
param:表示日期的字符串參數(shù)
return:根據(jù)字符串返回相應(yīng)日期的毫秒數(shù)
字符串格式:年份卖陵、基于0的月份(0-11)、月中的哪一天(1-31)张峰、小時數(shù)(0-23)泪蔫、分鐘、秒以及毫秒數(shù)喘批。只有年撩荣、月是必須的。若沒有提供月中的天數(shù)饶深,則默認為1餐曹;若省略其他參數(shù),則都默認為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));
這里很奇怪台猴,紅皮書上說的是默認設(shè)為0,但是我在Chrome上輸出下面代碼中y2k變量俱两,得到的結(jié)果是Sat Jan 01 2000 08:00:00 GMT+0800卿吐,并不是午夜0時。
Date構(gòu)造函數(shù)也會模仿Date.UTC()锋华,但是日期和時間是基于本地而非GMT來創(chuàng)建嗡官。
本地時間輸出,默認確實全設(shè)為0了毯焕。
//等價簡寫
//本地時間2000年1月1日午夜零時
var y2k = new Date(2000,0);
//本地時間2005年5月5日下午5:55:55
var allFives = new Date(2005,4,5,17,55,55);
ECMAScript 5添加了Date.new()方法衍腥,返回表示調(diào)用這個方法時的日期和時間的毫秒數(shù)。這個方法簡化了使用Date對象分析代碼的工作纳猫。例如:
//取得開始時間
var start = new Date();
//調(diào)用函數(shù)
doSomething();
//取得停止時間
var stop = new Date(),
result = stop - start;