时间与日期
ECMAscript 提供了 Date 类型来解决时间与日期类型
日期格式化方法
Date类型还有一些专门用于将日期格式化为字符串的方法,这些方法如下。
- toDateString():以特定于实现的格式显示星期几、月、日和年;
- toTimeString():以特定于实现的格式显示时、分、秒和时区;
- toLocaleDateString():以特定于地区的格式显示星期几、月、日和年;、
- toLocaleTimeString():以特定于实现的格式显示时、分、秒;
- toUTCString():以特定于实现的格式完整的UTC日期。
与toLocaleSTring()和toString()方法一样,以上这些字符串格式方法的输出也是因浏览器而异的,因此没有哪一个方法能够用来在用户页面中显示一致的日期信息。
除了前面介绍的方法之外,还有一个toGMTString()的方法,这是一个与toUTCSTring()等价的方法,其存在目的在于确保向后兼容。不过,ECMAScript推荐现在编写的代码一律使用toUTCString()方法。
<table>
<tr>
<td>方法</td>
<td>说明</td>
</tr>
<tr>
<td>toDateString()</td>
<td>方法可把 Date 对象的日</td>
</tr>
<tr>
<td>toDateString()</td>
<td>方法可把 Date 对象的日期部分转换为字符串,并返回结果</td>
</tr>
<tr>
<td>toTimeString()</td>
<td>方法可把 Time 对象的日期部分转换为字符串,并返回结果</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>返回日期的毫秒数 </td>
</tr>
<tr>
<td>setTime()</td>
<td>设置日期的毫秒数</td>
</tr>
<tr>
<td>getFullYear()</td>
<td>获得年份,如2016 </td>
</tr>
<tr>
<td>setFullYear()</td>
<td>设置年份,如2009</td>
</tr>
<tr>
<td>getMonth()</td>
<td>获得月份,0表示一月 </td>
</tr>
<tr>
<td>setMonth()</td>
<td>设置月份,0表示一月,超过11增加年份 </td>
</tr>
<tr>
<td>getDate()</td>
<td>获得日期中的天数 </td>
</tr>
<tr>
<td>setDate()</td>
<td>设置天数,超过31增加月份 </td>
</tr>
<tr>
<td>getDay()</td>
<td>获得星期,0表示星期日,6表示星期六 </td>
</tr>
<tr>
<td>getHours()</td>
<td>获得小时,0~23 </td>
</tr>
<tr>
<td>setHours()</td>
<td>设置小时,0~23 </td>
</tr>
<tr>
<td>getMinutes()</td>
<td>获得分钟,0~59 </td>
</tr>
<tr>
<td>setMinutes()</td>
<td>设置分钟,0~59 </td>
</tr>
<tr>
<td>getSeconds()</td>
<td>获得秒数,0~59 </td>
</tr>
<tr>
<td>setSeconds()</td>
<td>设置秒数,0~59 </td>
</tr>
<tr>
<td>getMilliseconds()</td>
<td>获得毫秒 </td>
</tr>
<tr>
<td>setMilliseconds()</td>
<td>设置毫秒 </td>
</tr>
</table>
日期/时间组件方法
<table>
<tr>
<td>方法</td>
<td>说明</td>
</tr>
<tr>
<td>getTime()</td>
<td>返回表示日期的毫秒数;与valueOf()方法返回的值相同</td>
</tr>
<tr>
<td>setTime(毫秒)</td>
<td>以毫秒数设置日期,会改变整个日期</td>
</tr>
<tr>
<td>getFullYear()</td>
<td>取得4位数的年份(如2016而非仅16)</td>
</tr>
<tr>
<td>getUTCFullYear()</td>
<td>返回UTC日期的4位数年份</td>
</tr>
<tr>
<td>setFullYear(年)</td>
<td>设置日期的年份。传入的年份值必须是4位数字</td>
</tr>
<tr>
<td>setUTCFullYear(年)</td>
<td>设置UTC日期的年份。传入的年份值必须是4位数字</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>设置日期中的月份。传入的月份值必须大于0,超过11则增加年份</td>
</tr>
<tr>
<td>setUTCMonth(月)</td>
<td>设置UTC日期中的月份。传入的月份必须大于0,超过11则增加年份</td>
</tr>
<tr>
<td>getDate()</td>
<td>返回日期月份中的天数(1到31)</td>
</tr>
<tr>
<td>getUTCDate()</td>
<td>返回UTC日期月份中的天数(1到31)</td>
</tr>
<tr>
<td>setDate(日)</td>
<td>设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份</td>
</tr>
<tr>
<td>setUTCDate(日)</td>
<td>设置UTC日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份</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>返回日期中的小时数(0到23)</td>
</tr>
<tr>
<td>getUTCHours()</td>
<td>返回UTC日期中的小时数(0到23)</td>
</tr>
<tr>
<td>setHours(时)</td>
<td>设置日期中的小时数,传入的值超过了23则增加月份中的天数。传入的值为负数,则实际值为前一天的24减参数的绝对值小时。</td>
</tr>
<tr>
<td>setUTCHours(时)</td>
<td>设置UTC日期中的小时数,传入的值超过了23则增加月份中的天数。传入的值为负数,则实际值为前一天的24减参数的绝对值小时。</td>
</tr>
<tr>
<td>getMinutes()</td>
<td>返回日期中的分钟数(0到59)。</td>
</tr>
<tr>
<td>getUTCMinutes()</td>
<td>返回UTC日期中的分钟数(0到59)。</td>
</tr>
<tr>
<td>setMibutes(分)</td>
<td>设置日期中的分钟数,传入的值超过59则增加小时数</td>
</tr>
<tr>
<td>setUTCMinutes(分)</td>
<td>设置UTC日期中的分钟数,传入的值超过59则增加小时数</td>
</tr>
<tr>
<td>getSeconds()</td>
<td>返回日期中的秒数(0到59)</td>
</tr>
<tr>
<td>getUTCSeconds()</td>
<td>返回UTC日期中的秒数(0到59)</td>
</tr>
<tr>
<td>setSeconds(秒)</td>
<td>设置日期中的秒数,传入的值超过59则增加分钟数</td>
</tr>
<tr>
<td>setUTCSeconds(秒)</td>
<td>设置UTC日期中的秒数,传入的值超过59则增加分钟数</td>
</tr>
<tr>
<td>getMilliseconds()</td>
<td>返回日期中的毫秒数</td>
</tr>
<tr>
<td>getUTCMilliseconds()</td>
<td>返回UTC日期中的毫秒数</td>
</tr>
<tr>
<td>setMilliseconds(毫秒)</td>
<td>设置日期中的毫秒数</td>
</tr>
<tr>
<td>setUTCMilliseconds(毫秒)</td>
<td>设置UTC日期中的毫秒数</td>
</tr>
<tr>
<td>getTimezoneOffset()</td>
<td>返回本地时间与UTC时间相差的分钟数。</td>
</tr>
</table>
日期计算
Date类中没有提供相关的日期计算方法,其实其已经给出了方便的日期计算方法,就是使用 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
可以通过简单的封装就可以指定一套自己的日期计算方法,如:
function toCharacterString(date){
var localeString = date.toLocaleString();
localeString = localeString.replace("/" , "年");
localeString = localeString.replace("/" , "月");
localeString = localeString.replace(" " , "日");
localeString = localeString.replace(":" , "点");
localeString = localeString.replace(":" , "分");
localeString = localeString + "秒";
console.log(localeString);
}
var date = new Date();
toCharacterString(date);// 2016年8月17日下午12点11分01秒