時(shí)間與日期
ECMAscript 提供了 Date 類型來解決時(shí)間與日期類型
日期格式化方法
Date類型還有一些專門用于將日期格式化為字符串的方法紧武,這些方法如下剃氧。
- toDateString():以特定于實(shí)現(xiàn)的格式顯示星期幾、月阻星、日和年朋鞍;
- toTimeString():以特定于實(shí)現(xiàn)的格式顯示時(shí)已添、分、秒和時(shí)區(qū)滥酥;
- toLocaleDateString():以特定于地區(qū)的格式顯示星期幾更舞、月、日和年坎吻;缆蝉、
- toLocaleTimeString():以特定于實(shí)現(xiàn)的格式顯示時(shí)、分瘦真、秒刊头;
- toUTCString():以特定于實(shí)現(xiàn)的格式完整的UTC日期。
與toLocaleSTring()和toString()方法一樣诸尽,以上這些字符串格式方法的輸出也是因?yàn)g覽器而異的原杂,因此沒有哪一個(gè)方法能夠用來在用戶頁面中顯示一致的日期信息。
除了前面介紹的方法之外您机,還有一個(gè)toGMTString()的方法穿肄,這是一個(gè)與toUTCSTring()等價(jià)的方法,其存在目的在于確保向后兼容际看。不過咸产,ECMAScript推薦現(xiàn)在編寫的代碼一律使用toUTCString()方法。
<table>
<tr>
<td>方法</td>
<td>說明</td>
</tr>
<tr>
<td>toDateString()</td>
<td>方法可把 Date 對(duì)象的日</td>
</tr>
<tr>
<td>toDateString()</td>
<td>方法可把 Date 對(duì)象的日期部分轉(zhuǎn)換為字符串仿村,并返回結(jié)果</td>
</tr>
<tr>
<td>toTimeString()</td>
<td>方法可把 Time 對(duì)象的日期部分轉(zhuǎn)換為字符串锐朴,并返回結(jié)果</td>
</tr>
<tr>
<td>toLocaleDateString()</td>
<td>如2016年1月1日 </td>
</tr>
<tr>
<td>toLocaleTimeString()</td>
<td>如13:55:55 </td>
</tr>
<tr>
<td>getTime()</td>
<td>返回日期的毫秒數(shù) </td>
</tr>
<tr>
<td>setTime()</td>
<td>設(shè)置日期的毫秒數(shù)</td>
</tr>
<tr>
<td>getFullYear()</td>
<td>獲得年份,如2016 </td>
</tr>
<tr>
<td>setFullYear()</td>
<td>設(shè)置年份蔼囊,如2009</td>
</tr>
<tr>
<td>getMonth()</td>
<td>獲得月份焚志,0表示一月 </td>
</tr>
<tr>
<td>setMonth()</td>
<td>設(shè)置月份,0表示一月畏鼓,超過11增加年份 </td>
</tr>
<tr>
<td>getDate()</td>
<td>獲得日期中的天數(shù) </td>
</tr>
<tr>
<td>setDate()</td>
<td>設(shè)置天數(shù)酱酬,超過31增加月份 </td>
</tr>
<tr>
<td>getDay()</td>
<td>獲得星期,0表示星期日云矫,6表示星期六 </td>
</tr>
<tr>
<td>getHours()</td>
<td>獲得小時(shí)膳沽,0~23 </td>
</tr>
<tr>
<td>setHours()</td>
<td>設(shè)置小時(shí),0~23 </td>
</tr>
<tr>
<td>getMinutes()</td>
<td>獲得分鐘让禀,0~59 </td>
</tr>
<tr>
<td>setMinutes()</td>
<td>設(shè)置分鐘挑社,0~59 </td>
</tr>
<tr>
<td>getSeconds()</td>
<td>獲得秒數(shù),0~59 </td>
</tr>
<tr>
<td>setSeconds()</td>
<td>設(shè)置秒數(shù)巡揍,0~59 </td>
</tr>
<tr>
<td>getMilliseconds()</td>
<td>獲得毫秒 </td>
</tr>
<tr>
<td>setMilliseconds()</td>
<td>設(shè)置毫秒 </td>
</tr>
</table>
日期/時(shí)間組件方法
<table>
<tr>
<td>方法</td>
<td>說明</td>
</tr>
<tr>
<td>getTime()</td>
<td>返回表示日期的毫秒數(shù)痛阻;與valueOf()方法返回的值相同</td>
</tr>
<tr>
<td>setTime(毫秒)</td>
<td>以毫秒數(shù)設(shè)置日期,會(huì)改變整個(gè)日期</td>
</tr>
<tr>
<td>getFullYear()</td>
<td>取得4位數(shù)的年份(如2016而非僅16)</td>
</tr>
<tr>
<td>getUTCFullYear()</td>
<td>返回UTC日期的4位數(shù)年份</td>
</tr>
<tr>
<td>setFullYear(年)</td>
<td>設(shè)置日期的年份腮敌。傳入的年份值必須是4位數(shù)字</td>
</tr>
<tr>
<td>setUTCFullYear(年)</td>
<td>設(shè)置UTC日期的年份阱当。傳入的年份值必須是4位數(shù)字</td>
</tr>
<tr>
<td>getMonth()</td>
<td>返回日期中的月份俏扩,其中0表示一月,11表示十二月</td>
</tr>
<tr>
<td>getUTCMonth()</td>
<td>返回UTC日期中的月份弊添,其中0表示一月录淡,11表示十二月</td>
</tr>
<tr>
<td>setMonth(月)</td>
<td>設(shè)置日期中的月份。傳入的月份值必須大于0油坝,超過11則增加年份</td>
</tr>
<tr>
<td>setUTCMonth(月)</td>
<td>設(shè)置UTC日期中的月份嫉戚。傳入的月份必須大于0,超過11則增加年份</td>
</tr>
<tr>
<td>getDate()</td>
<td>返回日期月份中的天數(shù)(1到31)</td>
</tr>
<tr>
<td>getUTCDate()</td>
<td>返回UTC日期月份中的天數(shù)(1到31)</td>
</tr>
<tr>
<td>setDate(日)</td>
<td>設(shè)置日期月份中的天數(shù)免钻。如果傳入的值超過了該月中應(yīng)有的天數(shù)彼水,則增加月份</td>
</tr>
<tr>
<td>setUTCDate(日)</td>
<td>設(shè)置UTC日期月份中的天數(shù)。如果傳入的值超過了該月中應(yīng)有的天數(shù)极舔,則增加月份</td>
</tr>
<tr>
<td>getDay()</td>
<td>返回日期中星期的星期幾(其中0表示星期日,6表示星期六)</td>
</tr>
<tr>
<td>getUTCDay()</td>
<td>返回UTC日期中星期的星期幾(其中0表示星期日链瓦,6表示星期六)</td>
</tr>
<tr>
<td>getHours()</td>
<td>返回日期中的小時(shí)數(shù)(0到23)</td>
</tr>
<tr>
<td>getUTCHours()</td>
<td>返回UTC日期中的小時(shí)數(shù)(0到23)</td>
</tr>
<tr>
<td>setHours(時(shí))</td>
<td>設(shè)置日期中的小時(shí)數(shù)拆魏,傳入的值超過了23則增加月份中的天數(shù)。傳入的值為負(fù)數(shù)慈俯,則實(shí)際值為前一天的24減參數(shù)的絕對(duì)值小時(shí)渤刃。</td>
</tr>
<tr>
<td>setUTCHours(時(shí))</td>
<td>設(shè)置UTC日期中的小時(shí)數(shù),傳入的值超過了23則增加月份中的天數(shù)贴膘。傳入的值為負(fù)數(shù)卖子,則實(shí)際值為前一天的24減參數(shù)的絕對(duì)值小時(shí)。</td>
</tr>
<tr>
<td>getMinutes()</td>
<td>返回日期中的分鐘數(shù)(0到59)刑峡。</td>
</tr>
<tr>
<td>getUTCMinutes()</td>
<td>返回UTC日期中的分鐘數(shù)(0到59)洋闽。</td>
</tr>
<tr>
<td>setMibutes(分)</td>
<td>設(shè)置日期中的分鐘數(shù),傳入的值超過59則增加小時(shí)數(shù)</td>
</tr>
<tr>
<td>setUTCMinutes(分)</td>
<td>設(shè)置UTC日期中的分鐘數(shù)突梦,傳入的值超過59則增加小時(shí)數(shù)</td>
</tr>
<tr>
<td>getSeconds()</td>
<td>返回日期中的秒數(shù)(0到59)</td>
</tr>
<tr>
<td>getUTCSeconds()</td>
<td>返回UTC日期中的秒數(shù)(0到59)</td>
</tr>
<tr>
<td>setSeconds(秒)</td>
<td>設(shè)置日期中的秒數(shù)诫舅,傳入的值超過59則增加分鐘數(shù)</td>
</tr>
<tr>
<td>setUTCSeconds(秒)</td>
<td>設(shè)置UTC日期中的秒數(shù),傳入的值超過59則增加分鐘數(shù)</td>
</tr>
<tr>
<td>getMilliseconds()</td>
<td>返回日期中的毫秒數(shù)</td>
</tr>
<tr>
<td>getUTCMilliseconds()</td>
<td>返回UTC日期中的毫秒數(shù)</td>
</tr>
<tr>
<td>setMilliseconds(毫秒)</td>
<td>設(shè)置日期中的毫秒數(shù)</td>
</tr>
<tr>
<td>setUTCMilliseconds(毫秒)</td>
<td>設(shè)置UTC日期中的毫秒數(shù)</td>
</tr>
<tr>
<td>getTimezoneOffset()</td>
<td>返回本地時(shí)間與UTC時(shí)間相差的分鐘數(shù)宫患。</td>
</tr>
</table>
日期計(jì)算
Date類中沒有提供相關(guān)的日期計(jì)算方法刊懈,其實(shí)其已經(jīng)給出了方便的日期計(jì)算方法,就是使用 getXXX() 與 setXXX() 方法:
var date = new Date(2016 , 11 , 15 , 12 , 11, 0);
console.log(date.toLocaleString());
date.setDate(date.getDate()-120);//2016/8/17 下午12:11:00
//27天前的日期
console.log(date.toLocaleString());//2016/12/15下午12:11:00
可以通過簡(jiǎn)單的封裝就可以指定一套自己的日期計(jì)算方法娃闲,如:
function toCharacterString(date){
var localeString = date.toLocaleString();
localeString = localeString.replace("/" , "年");
localeString = localeString.replace("/" , "月");
localeString = localeString.replace(" " , "日");
localeString = localeString.replace(":" , "點(diǎn)");
localeString = localeString.replace(":" , "分");
localeString = localeString + "秒";
console.log(localeString);
}
var date = new Date();
toCharacterString(date);// 2016年8月17日下午12點(diǎn)11分01秒