1、Date 類型
ECMAScript中的Date類型使用的是UTC(世界統(tǒng)一時(shí)間)1970年1月1日零時(shí)開(kāi)始進(jìn)過(guò)的毫秒來(lái)保存的時(shí)間與日期。
創(chuàng)建一個(gè)Date對(duì)象和創(chuàng)建一個(gè)Object對(duì)象差不多,通過(guò)new關(guān)鍵字和構(gòu)造函數(shù)來(lái)創(chuàng)建的。如果創(chuàng)建的時(shí)候沒(méi)有傳遞參數(shù),那么默認(rèn)的獲取的是本地的當(dāng)前時(shí)間
ECMAScript提供了兩個(gè)靜態(tài)方法 Date.parse()和Date.UTC();都是接受參數(shù)返回毫秒
Date.parse()中接收的是表示日期的字符串,一般常用的格式都可以,年月日/日月年,如果沒(méi)有給出時(shí)間就默認(rèn)的是0,如'2013-01-13 12:34:24';當(dāng)然也包含英文寫(xiě)法,'英文月名 日, 年',如 May 25, 2004;.'英文星期幾 英文月名 日 年 時(shí):分:秒 時(shí)區(qū)', 如 'Tue May 25 2004 00:00:00 GMT-070';如果不滿足上面的一些要求就會(huì)返回一個(gè)NaN
Eg:alert(Date.parse('6/13/2011')); //1307894400000
Date.UTC()方法同樣也返回表示日期的毫秒數(shù), 但它與 Date.parse()在構(gòu)建值時(shí)使用不同的信息。 (年份, 基于 0 的月份[0 表示 1 月, 1 表示 2 月], 月中的哪一天[1-31], 小時(shí)數(shù)[0-23],分鐘,秒以及毫秒)。只有前兩個(gè)參數(shù)是必須的。如果沒(méi)有提供 月數(shù),則天數(shù)為 1;如果省略其他參數(shù),則統(tǒng)統(tǒng)為 0. eg:Date.UTC(2013,11,25);傳遞 的是有效的數(shù)值非字符串
如果輸入的參數(shù)不正確就會(huì)返回NaN或者是負(fù)數(shù)等非法信息 Date.UTC('2012-12');
由于創(chuàng)建日期的時(shí)候是可以傳遞一個(gè)參數(shù)的,故需要輸出指定的日期的時(shí)候,將上面兩個(gè)方法的返回值傳遞給Date()的構(gòu)造函數(shù)即可,new Date(Date.parse('2014/01/02'));new Date(Date.UTC());當(dāng)然對(duì)于Date.parse()可以直接傳遞復(fù)合個(gè)數(shù)的數(shù)值字符串給Date構(gòu)造函數(shù),因?yàn)橄到y(tǒng)會(huì)自動(dòng)的調(diào)用Date.parse()函數(shù),eg:new Date('2014-01-02');
2、通用的方法: toString()(返回UTC格式時(shí)間), toLocaleString()(返回本地格式), valueOf()(返回毫秒數(shù))
3、日期格式化方法
toDateString() //以特定的格式顯示星期幾、月、日和年 toDateString()
//以特定的格式顯示星期幾、月、日和年
toTimeString()
//以特定的格式顯示時(shí)分秒和時(shí)區(qū)
toLocaleDateString()
//以特定本地區(qū)格式顯示日期
toLocaleTimeString()
//以特定的本地區(qū)格式顯示時(shí)間和時(shí)區(qū)
toUTCString()
//以特定格式顯示UTC日期
toTimeString() //以特定的格式顯示時(shí)分秒和時(shí)區(qū)
toLocaleDateString() //以特定本地區(qū)格式顯示日期
toLocaleTimeString() //以特定的本地區(qū)格式顯示時(shí)間和時(shí)區(qū)
toUTCString() //以特定格式顯示UTC日期
toDateString() //以特定的格式顯示星期幾、月、日和年 toTimeString() //以特定的格式顯示時(shí)分秒和時(shí)區(qū) toLocaleDateString() //以特定本地區(qū)格式顯示日期 toLocaleTimeString() //以特定的本地區(qū)格式顯示時(shí)間和時(shí)區(qū) toUTCString() //以特定格式顯示UTC日期 |
1 2 3 4 5 | toDateString() //以特定的格式顯示星期幾、月、日和年 toTimeString() //以特定的格式顯示時(shí)分秒和時(shí)區(qū) toLocaleDateString() //以特定本地區(qū)格式顯示日期 toLocaleTimeString() //以特定的本地區(qū)格式顯示時(shí)間和時(shí)區(qū) toUTCString() //以特定格式顯示UTC日期 |
4、組件方法(重要) 下面的set方法是設(shè)置時(shí)間變量中的某一部分值,get方法是獲取值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | box.getTime() //獲取日期的毫秒數(shù),和valueOf的返回值是一樣的 box.setTime(100) //一毫秒數(shù)來(lái)設(shè)置時(shí)間,會(huì)改變整個(gè)日期,因?yàn)槿掌谑且院撩霐?shù)保存的 box.getYear() //獲取的是當(dāng)前年份相對(duì)與1900的間隔時(shí)間 box.setYear(114) //以間隔時(shí)間來(lái)設(shè)置年份, box.getFullYear() //獲取日期中的四位年份部分,返回的是當(dāng)前年如:2014 box.setFullYear(2014) //設(shè)置四位年份部分,返回的是毫秒數(shù) box.getMonth() //獲取月份,如果沒(méi)有指定月份,則從0開(kāi)始算起(0表示一月份) box.setMonth(11) //設(shè)置月份,11表示的是第十二月份 box.getDate() //獲取的是當(dāng)前的日期 box.setDate(23) //設(shè)置日期,返回的是毫秒數(shù) box.getDay() //獲取的是當(dāng)前時(shí)間中的星期幾,0表示星期1,6表示星期6 box.setDay(2) //設(shè)置星期幾 box.getHours() //獲取當(dāng)前日期中的時(shí)間部分 box.setHours(12) //返回時(shí),24小時(shí)制 box.getMinutes() //獲取當(dāng)前日期中的分鐘部分 box.setMinutes(22) //設(shè)置分鐘 box.getSeconds() //獲取秒鐘 box.setSeconds(23) //設(shè)置秒鐘 box.getMillseconds() //獲取毫秒數(shù) box.setMillseconds(233) //設(shè)置毫秒數(shù) box.getTimezoneOffset() //返回本地時(shí)間和UTC時(shí)間相差的分鐘 |
注:上面的方法中除了最后一個(gè)方法 box.setTimezoneOffset()以外,其他的方法都具有UTC功能,以便和世界時(shí)間相協(xié)調(diào),如:setDate()和getDate()對(duì)應(yīng)的UTC方法是setUTCDate()和getUTCDate(
//創(chuàng)建一個(gè)日期類的對(duì)象,通過(guò)構(gòu)造方法,此處沒(méi)有傳遞參數(shù),獲取的是本的時(shí)間(瀏覽器各異)
var time=new Date();
alert(time);//Thu Jan 02 2014 15:06:46 GMT+0800 (China Standard Time)
// Date.parse() 和 Date.UTC() 是Date類型提供的兩個(gè)靜態(tài)方法。不需要?jiǎng)?chuàng)建對(duì)象的
//Date.parse() 返回指定日期的毫秒數(shù),指定日期有三種格式,不符合格式會(huì)返回NaN
// 字符串括起來(lái)的日月年 '4/3/2013';
var box=Date.parse('15/01/2013');
alert(box);//1393603200000
var age=Date.parse('15-01-2013');
alert(age);//1393603200000
var time=Date.parse('2013-01-15');
alert(time);//1358208000000
alert(Date.parse('2013-15-01'));//NaN
//'英文月 日,年'
var time=Date.parse('May 25,2013');
alert(time);//1369411200000
time=Date.parse('May,25,2013');
alert(time);//1369411200000
var ti=Date.parse('25,May,2013');
alert(ti);//1369411200000
var t=Date.parse('2013,May,25');
alert(t);//1369411200000
var box=Date.parse('2013,25,May');
alert(box);//1369411200000
var age=Date.parse('2013-May-25');
alert(age);//NaN
//'英文星期幾 英文月名 日 年 時(shí):分:秒 時(shí)區(qū)', 如 Tue May 25 2004 00:00:00 GMT-070
alert(Date.parse('Tue May 25 2004 00:00:00 GMT-070'));//1085447400000
//如果想輸出具體的日期和時(shí)間,可以把值傳入 Data 的構(gòu)造函數(shù)里面
var box=new Date(Date.parse('15-01-2013'));
alert(box);//Sat Mar 01 2014 00:00:00 GMT+0800 (China Standard Time)
//可以不用寫(xiě) Date.parse() 而是直接傳入一個(gè)符合上面三種格式的日期,
//系統(tǒng)會(huì)自動(dòng)的調(diào)用 Date.parse()方法
var box=new Date('15-01-2013');
alert(box);//Sat Mar 01 2014 00:00:00 GMT+0800 (China Standard Time)
//Date 對(duì)象及其在不同瀏覽器中的實(shí)現(xiàn)有許多奇怪的行為。其中有一種傾向是將超
//出的范圍的值替換成當(dāng)前的值,以便生成輸出。例如,在解析“January 32, 2007”時(shí),有的
//瀏覽器會(huì)講其解釋為“February 1, 2007” 。而 Opera 則傾向與插入當(dāng)前月份的當(dāng)前日期
var box=new Date('January 32, 2007');
alert(box);//Thu Feb 01 2007 00:00:00 GMT+0800 (China Standard Time)
//UTC 是國(guó)際統(tǒng)一時(shí)間 我國(guó)為東八區(qū),故UTC時(shí)間加上8小時(shí)為本地時(shí)間
//Date.UTC()方法同樣也返回表示日期的毫秒數(shù), 但它與 Date.parse()在構(gòu)建值時(shí)使用不同
//的信息。 (年份, 基于 0 的月份[0 表示 1 月, 1 表示 2 月], 月中的哪一天[1-31], 小時(shí)數(shù)[0-23],
//分鐘,秒以及毫秒)。只有前兩個(gè)參數(shù)是必須的。如果沒(méi)有提供月數(shù),則天數(shù)為 1;如果省
//略其他參數(shù),則統(tǒng)統(tǒng)為 0.
alert(Date.UTC(2013,12));//1388534400000
//如果輸入非法值 則會(huì)返回負(fù)數(shù)或者 NaN
alert(Date.UTC('2013,13'));//NaN
//同樣將返回值傳入到 Date的構(gòu)造函數(shù)中就可以輸出具體的值
alert(new Date(Date.UTC(2011,11,5,15,13,16)));
//Mon Dec 05 2011 23:13:16 GMT+0800 (China Standard Time)
*/
/* 通用方法 toString()(UTC格式) toLocaleString()(本地格式) valueOf()(返回的是毫秒數(shù))
var box=new Date(Date.UTC(2011,11,5,15,13,16));
alert(box);//Mon Dec 05 2011 23:13:16 GMT+0800 (China Standard Time)
alert(box.toString());//Mon Dec 05 2011 23:13:16 GMT+0800 (China Standard Time)
alert(box.toLocaleString());//?2011?-?12?-?05? ?23?:?13?:?16
alert(box.valueOf());//返回的是毫秒數(shù) 1323097996000
*/
/* 序列化方法 都是按照特定的格式顯示
var box =new Date();
alert(box);//Thu Jan 02 2014 17:18:58 GMT+0800 (China Standard Time)
alert(box.toDateString());//Thu Jan 02 2014
alert(box.toTimeString());//17:18:58 GMT+0800 (China Standard Time)
alert(box.toLocaleDateString());//2014?-?01?-?02?
alert(box.toLocaleTimeString());//17:18:30
alert(box.toUTCString());//以特定的格式顯示完整的UTC時(shí)間 Thu, 02 Jan 2014 09:21:54 GMT
*/
/* 組件方法 獲取年月日時(shí)分秒星期等等等等
var box=new Date();
alert(box.getYear());//114 獲取的是相對(duì)于1900年的年份間隔
alert(box.getTime());//1388654969210 返回的是毫秒數(shù) 和valueOf()返回的值是一樣的
alert(box.getDate());//2
alert(box.getFullYear());//2014
alert(box.getMonth());//0 // 0 代表的是一月
alert(box.getDay());//4 星期幾
alert(box.getHours());// 17 返回的是本地的小時(shí)
alert(box.getMinutes());//30 返回的是分鐘數(shù)
alert(box.getSeconds());//48 返回的是秒
alert(box.getMilliseconds());//884 返回的是毫秒數(shù)
alert(box.getTimezoneOffset());// -480 返回的是本地時(shí)間和UTC時(shí)間相差的分鐘數(shù)
*/
聯(lián)系客服