javascript
第一百零四节,JavaScript时间与日期
JavaScript時間與日期
?
學(xué)習(xí)要點:
1.Date類型
2.通用的方法
3.格式化方法
4.組件方法
?
ECMAScript提供了Date類型來處理時間和日期。Date類型內(nèi)置一系列獲取和設(shè)置日期時間信息的方法。
?
一.Date類型
ECMAScript中的Date類型是在早期Java中java.util.Date類基礎(chǔ)上構(gòu)建的。為此,Date類型使用UTC (Coordinated Universal Time,國際協(xié)調(diào)時間[又稱世界統(tǒng)一時間]) 1970年1月1日午夜(零時)開始經(jīng)過的毫秒來保存日期。在使用這種數(shù)據(jù)存儲格式的條件下,Date類型保存的日期能夠精確到1970年1月1日之前或之后的285616年。
Date()創(chuàng)建一個日期對象,使用new運算符和Date構(gòu)造方法(構(gòu)造函數(shù))即可
在調(diào)用Date構(gòu)造方法而不傳遞參數(shù)的情況下,新建的對象自動獲取當(dāng)前的時間和日期。
var box = new Date(); //創(chuàng)建一個日期對象 alert(box); //打印時間對象,返回Thu Nov 03 2016 14:56:21 GMT+0800//不同瀏覽器顯示不同ECMAScript提供了兩個方法,Date.parse()和Date.UTC()。Date.parse()方法接收一個表示日期的字符串參數(shù),然后嘗試根據(jù)這個字符串返回相應(yīng)的毫秒數(shù)。ECMA-262沒有定義Date.parse()應(yīng)該支持哪種日期格式,因此方法的行為因?qū)崿F(xiàn)而異,因地區(qū)而異。默認(rèn)通常接收的日期格式如下:
?
Date.parse()方法接收一個表示日期的字符串參數(shù),然后嘗試根據(jù)這個字符串返回相應(yīng)的毫秒數(shù)【有參傳時間日期格式】
1.'月/日/年',如6/13/2011;
2.'英文月名 日, 年',如 May 25, 2004;
3.'英文星期幾 英文月名 日 年 時:分:秒 時區(qū)',如 Tue May 25 2004 00:00:00 GMT-070
如果Date.parse()沒有傳入或者不是標(biāo)準(zhǔn)的日期格式,那么就會返回NaN。
var box = Date.parse('6/13/2011'); //創(chuàng)建一個日期對象,調(diào)用parse方法,傳入時間格式 alert(box); //打印時間對象,返回1307894400000,時間毫秒數(shù)如果想輸出指定的日期,那么把Date.parse()傳入Date構(gòu)造方法里。
var box1 = new Date(Date.parse('6/13/2011')); //Date.parse獲取指定時間的毫秒數(shù),將毫秒數(shù)傳參給Date() alert(box1); //返回Mon Jun 13 2011 00:00:00 GMT+0800var box2 = new Date('6/13/2011'); //直接傳入指定時間,后臺會自動調(diào)用Date.parse()方法 alert(box2); //返回Mon Jun 13 2011 00:00:00 GMT+0800PS:Date對象及其在不同瀏覽器中的實現(xiàn)有許多奇怪的行為。其中有一種傾向是將超出的范圍的值替換成當(dāng)前的值,以便生成輸出。例如,在解析“January 32, 2007”時,有的瀏覽器會講其解釋為“February 1, 2007”。而Opera則傾向與插入當(dāng)前月份的當(dāng)前日期。
?
Date.UTC()方法接收一個表示日期的字符串參數(shù),返回相應(yīng)的毫秒數(shù)
Date.UTC()方法同樣也返回表示日期的毫秒數(shù),但它與Date.parse()在構(gòu)建值時使用不同的信息。(年份,基于0的月份[0表示1月,1表示2月],月中的哪一天[1-31],小時數(shù)[0-23],分鐘,秒以及毫秒)。只有前兩個參數(shù)是必須的。如果沒有提供月數(shù),則天數(shù)為1;如果省略其他參數(shù),則統(tǒng)統(tǒng)為0.
var box = Date.UTC(2016,11); //必傳參數(shù)年月 alert(box); //返回1480550400000如果Date.UTC()參數(shù)傳遞錯誤,那么就會出現(xiàn)負(fù)值或者NaN等非法信息。
alert(Date.UTC()); //負(fù)值或者NaN如果要輸出指定日期,那么直接把Date.UTC()傳入Date構(gòu)造方法里即可。
var box = new Date(Date.UTC(2011,11, 5, 15, 13, 16)); //Date.UTC獲取到毫秒數(shù),傳給Date() alert(box); //返回Mon Dec 05 2011 23:13:16 GMT+0800 var box = new Date(2011,11, 5, 15, 13, 16); //直接傳參給Date()【推薦】 alert(box); //返回Mon Dec 05 2011 15:13:16 GMT+0800?
二.通用的方法
與其他類型一樣,Date類型也重寫了toLocaleString()、toString()和valueOf()方法;但這些方法返回值與其他類型中的方法不同。
toLocaleString()方法,格式:2016/11/3 下午4:21:03,瀏覽器有的顯示不同
var box = new Date(); //獲取系統(tǒng)當(dāng)前時間 alert(box.toLocaleString()); //將當(dāng)前時間格式化,2016/11/3 下午4:21:03,瀏覽器有的顯示不同toString()方法,格式:Thu Nov 03 2016 16:23:22 GMT+0800,返回國際時間格式
var box = new Date(); //獲取系統(tǒng)當(dāng)前時間 alert(box.toString()); //將當(dāng)前時間格式化,Thu Nov 03 2016 16:23:22 GMT+0800,給直接Date()一樣,說明默認(rèn)調(diào)用了toString()方法valueOf()方法,格式:1478162137197,返回毫秒數(shù)
var box = new Date(); //獲取系統(tǒng)當(dāng)前時間 alert(box.valueOf()); //將當(dāng)前時間格式化,1478162137197,返回毫秒數(shù)PS:這兩個方法在不同瀏覽器顯示的效果又不一樣,但不用擔(dān)心,這兩個方法只是在調(diào)試比較有用,在顯示時間和日期上,沒什么價值。valueOf()方法顯示毫秒數(shù)。
?
三.日期格式化方法
Date類型還有一些專門用于將日期格式化為字符串的方法
toDateString()以特定的格式顯示星期幾、月、日和年/Thu Nov 03 2016
toTimeString()以特定的格式顯示時、分、秒和時區(qū)/16:45:47 GMT+0800
toLocaleDateString()以特定地區(qū)格式顯示、月、日和年/2016/11/3
toLocaleTimeString()以特定地區(qū)格式顯示時、分、秒和時區(qū)/下午4:49:03
toUTCString()以特定的格式顯示完整的UTC日期。/Thu, 03 Nov 2016 08:49:53 GMT
var box = new Date(); alert(box.toDateString()); //以特定的格式顯示星期幾、月、日和年/Thu Nov 03 2016 alert(box.toTimeString()); //以特定的格式顯示時、分、秒和時區(qū)/16:45:47 GMT+0800 alert(box.toLocaleDateString()); //以特定地區(qū)格式顯示、月、日和年/2016/11/3 alert(box.toLocaleTimeString()); //以特定地區(qū)格式顯示時、分、秒和時區(qū)/下午4:49:03 alert(box.toUTCString()); //以特定的格式顯示完整的UTC日期。/Thu, 03 Nov 2016 08:49:53 GMT?
四.組件方法
組件方法,是為我們單獨獲取你想要的各種時間/日期而提供的方法。需要注意的時候,這些方法中,有帶UTC的,有不帶UTC的。UTC日期指的是在沒有時區(qū)偏差的情況下的日期值。
帶UTC的和不帶UTC的相差8個小時
getTime()獲取日期的毫秒數(shù),和valueOf()返回一致/1478163539545
var box = new Date(); alert(box.getTime()); //獲取日期的毫秒數(shù),和valueOf()返回一致/1478163539545setTime()以毫秒數(shù)設(shè)置日期,會改變整個日期/1478163539545
var box = new Date(); alert(box.setTime(1478163539545)); //以毫秒數(shù)設(shè)置日期,會改變整個日期/1478163539545getFullYear()獲取四位年份/2016
var box = new Date(); alert(box.getFullYear()); //獲取四位年份/2016setFullYear()設(shè)置四位年份,返回的是毫秒數(shù)
var box = new Date(); alert(box.setFullYear(2012)); //設(shè)置四位年份,返回的是毫秒數(shù)/1351935497504getMonth()獲取月份,沒指定月份,從0開始算起/11
var box = new Date(); alert(box.getMonth()+1); //獲取月份,沒指定月份,從0開始算起/11setMonth()設(shè)置月份/返回毫秒1480758520312
var box = new Date(); alert(box.setMonth(11)); //設(shè)置月份/返回毫秒1480758520312getDate()獲取日期3
var box = new Date(); alert(box.getDate()); //獲取日期3setDate()設(shè)置日期,返回毫秒數(shù)/1478598717254
var box = new Date(); alert(box.setDate(8)); //設(shè)置日期,返回毫秒數(shù)/1478598717254getDay()返回星期幾,0表示星期日,6表示星期六
var box = new Date(); alert(box.getDay()); //返回星期幾,0表示星期日,6表示星期六setDay()設(shè)置星期幾返回毫秒數(shù)
var box = new Date(); alert(box.setDay()); //設(shè)置星期幾getHours()返回時18
var box = new Date(); alert(box.getHours()); //返回時18setHours()設(shè)置時返回毫秒1478145765552
var box = new Date(); alert(box.setHours(12)); //設(shè)置時返回毫秒1478145765552getMinutes()返回分鐘/4
var box = new Date(); alert(box.getMinutes()); //返回分鐘/4setMinutes()設(shè)置分鐘返回毫秒/1478168523941
var box = new Date(); alert(box.setMinutes(22)); //設(shè)置分鐘返回毫秒/1478168523941getSeconds()返回秒數(shù)
var box = new Date(); alert(box.getSeconds()); //返回秒數(shù)setSeconds()設(shè)置秒數(shù)返回毫秒
var box = new Date(); alert(box.setSeconds(44)); //設(shè)置秒數(shù)返回毫秒getMilliseconds()返回毫秒數(shù)
var box = new Date(); alert(box.getMilliseconds()); //返回毫秒數(shù)607setMilliseconds()設(shè)置毫秒數(shù)
var box = new Date(); alert(box.setMilliseconds(123)); //設(shè)置毫秒數(shù)getTimezoneOffset()返回本地時間和UTC時間相差的分鐘數(shù)/-480
var box = new Date(); alert(box.getTimezoneOffset()); //返回本地時間和UTC時間相差的分鐘數(shù)/-480PS:以上方法除了getTimezoneOffset(),其他都具有UTC功能,例如setDate()及getDate()獲取星期幾,那么就會有setUTCDate()及getUTCDate()。表示世界協(xié)調(diào)時間。?
也就是除了getTimezoneOffset()外,其他方法都有UTC功能,UTC表示世界協(xié)調(diào)時間,與我們的時間相差8個小時?,要使用UTC功能在方法里加上UTC即可? 如:
var box = new Date(); alert(box.getUTCHours()); //獲取UTC時間用組件方式組合完整的時間【常用】
var box = new Date(); alert(box.getFullYear()+'-'+(box.getMonth()+1)+'-'+box.getDate()+' '+box.getHours()+':'+box.getMinutes()+':'+box.getSeconds()); //返回2016-11-3 18:40:22?
轉(zhuǎn)載于:https://www.cnblogs.com/adc8868/p/6026565.html
總結(jié)
以上是生活随笔為你收集整理的第一百零四节,JavaScript时间与日期的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鼎烹世家和太太乐鸡精哪个好?
- 下一篇: 洛谷 P1209 修理牛棚== Code