7.时间和日期
時間和日期
學習要點:
1.Date類型
2.通用的方法
3.格式化方法
4.組件方法
ECMAScript提供了Date類型來處理事件和日期。Date類型內(nèi)置一系列獲取和設置日期實踐心得方法。
一、Date類型
ECMAScript中的Date類型時早起JAVA中的java.util.Date類基礎上構建的。為此,Date類型使用UTC
(國際協(xié)調(diào)時間【又稱世界統(tǒng)一時間】)1970年1月1日午夜(零時)開始經(jīng)過的毫秒來保存日期。在使用這種數(shù)據(jù)
存儲格式的條件下,Date類型保存的日期能夠精確到1970年1月1日之前或者之后的285616年。
創(chuàng)建一個日期對象,使用new運算符和Date構造方法(構造函數(shù))即可。
var box = new Date(); //創(chuàng)建一個日期對象 ()構造方法里面可以傳參數(shù),指定時間,如果沒有傳就是默認的時間
在調(diào)用Date構造方法而不傳遞參數(shù)的情況下,新建的對象自動獲取當前的時間和日期。
alert(box); //不同瀏覽器顯示不同
ECMAScript提供了兩個方法,Date.parse()和Date.UTC()。Date.parse()方法接收一個表示日期的字符串參數(shù),
然后嘗試根據(jù)這個字符串返回相應的毫秒數(shù)。ECMAScript-262沒有定義Date.parse()應該支持那種日期格式,
因此方法的行為因?qū)崿F(xiàn)而異,因地區(qū)而異。默認通常接收的日期格式如下:
1.‘月/日/年’,如6/13/2012;
2.‘英文月名 日,年’,如 May 25 ,2012;
3.‘英文星期幾 英文月名 日 年 時:分:秒 時區(qū)’,如Tue May 25 2012 00:00:00 GMT-070
alert(Date.parse('6/13/2012')); //130789440000返回的是一個毫秒數(shù)
如果Date.parse()沒有傳入或者不是標準的日期格式,那么就會返回NaN。
alert(Date.parse()); //NaN
如果想輸出指定的日期,那么把Date.parse()傳入Date構造方法里。把毫秒數(shù)轉(zhuǎn)換成我們看的懂的時間。
var box = new Date(Date.parse('6/13/2012')); //Mon Jun 13 2012 00:00:00 GMT+0800或毫秒數(shù)
var box = new Date('6/13/2012'); //直接傳入,Date.parse()后臺被調(diào)用
var box = new Date('agasdf 1223');
alert(box); //亂寫的日期格式,會返回invalid Date(無效的日期)
//火狐返回無效的時間 , 谷歌返回一個混亂的如期 , IE返回的是一個NaN
var box = new Date('May 25,2012'); //這是可以的
PS:Date對象及其在不同瀏覽器中的實現(xiàn)有許多其滾的行為。其中有一種傾向是將超出的范圍的值替換成當前的
值,以便于生成輸出。例如:在解析“January 32 , 2012”時,有的瀏覽器會將其解釋為“February 1,2012”.
而Opera則傾向于插入當前月份的當前日期。
Date.UTC()方法同樣也返回表示日期的毫秒數(shù),但它與Date.parse()在構建值時使用不同的信息。(年份,基于
0的月份【0表示1月,1表示2月】,月中的哪一天【1-31】,小時數(shù)【0-23】,分鐘,秒以及毫秒),只有前
兩個參數(shù)是必須的。如果沒有提供月份,則天數(shù)為1:如果省略其他參數(shù),則統(tǒng)統(tǒng)為0;
alert(Date.UTC(2012,11)); //132269760000 毫秒數(shù)
如果Date.UTC()參數(shù)傳遞錯誤,那么就會出現(xiàn)負值或者NaN等非發(fā)信息。
alert(Date.UTC()); //負值或者NaN
如果要輸出指定日期,那么直接把Date.UTC()傳入Date構造方法里面即可。
var box = new Date(Date.UTC(2011,11,5,15,13,16));
?
二、通用的方法
與其他類型一樣,Date類型也重寫了toLocaleString()、toString()和valueOf()方法:但這些方法返回值與其他類型中
的方法不同。
var box = new Date(Date.UTC(2011,11,5,15,13,16)); //按照UTC統(tǒng)一協(xié)調(diào)時間
alert('toString:'+box.toString());
alert('toLocalString:'+box.toLocaleString()); //按照本地格式輸出
alert('valueOf'+box.valueOf()); //返回日期的毫秒數(shù)
PS:這兩個方法在不同的瀏覽器顯示的效果又是不一樣的,但不用擔心,這兩個方法只是在調(diào)試比較有用,在顯
示時間和日期上,沒有什么價值。valueOf()方法顯示毫秒數(shù)。
三、日期格式化方法
Date類型還是有一些專門用于將日期格式化為字符串的方法。
var box = new Date();
alert(box.toDateString()); //以特定的格式顯示星期幾、月、日和年
alert(box.toTimeString()); //以特定的格式顯示時、分、秒和時區(qū)
alert(box.toLocaleDateString()); //以特定的地區(qū)格式顯示星期幾、月、日和年
alert(box.toLocaleTimeString()); //以特定的地區(qū)格式顯示時、分、秒和時區(qū)
alert(box.toUTCString()); //以特定的格式顯示完整的UTC日期
四、組件方法
組建方法,是為我們單獨獲取你想要的各種時間/日期而提供的方法。需要注意的是,這些方法中,有帶UTC的,
有不到UTC的。UTC日期指的是沒有時區(qū)偏差的情況下的日期值。
alert(box.getTime()); //獲取日期的毫秒數(shù),和valueOf()返回一致
alert(box.setTime(100)); //以毫秒數(shù)設置日期,會改變整個日期
alert(box.getFullYear()); //獲取四位年份
alert(box.setFullYear(2012)); //設置四位年份,返回的是毫秒數(shù)
alert(box.getMonth()); //獲取月份,沒指定月份,從0開始算起,月份加1才是當前的月份
alert(box.setMonth(11)); //設置月份
alert(box.getDate()); //獲取日期
alert(box.setDate(8)); //設置日期,返回毫秒數(shù)
alert(box.getDay()); //返回星期幾,0表示星期日,6表示星期六
alert(box.setDay(2)); //設置星期幾
alert(box.getHours()); //返回時
alert(box.setHours(12)); //設置時
alert(box.getMinutes()); //返回分鐘
alert(box.setMinutes(22)); //設置分鐘
alert(box.getSeconds()); //返回秒數(shù)
alert(box.setSeconds(44)); //設置秒數(shù)
alert(box.getMilliseconds()); //返回毫秒數(shù)
alert(box.setMilliseconds()); //設置毫秒數(shù)
alert(box.getTimezoneOffset()); //返回本地時間和UTC時間相差的分鐘數(shù)
PS:以上方法除了getTimezoneOffset(),其他的都具有UTC功能,例如setDate()及getDate()獲取星期幾,那么
就會有setUTCDate()及getUTCDate(),表示世界協(xié)調(diào)時間。
?
轉(zhuǎn)載于:https://www.cnblogs.com/journey-IT/p/5260197.html
總結
- 上一篇: Android Studio 代码自动提
- 下一篇: 63. Unique Paths II