在实际应用中,我们常常需要用到日期或者时间等,而在 JS 中,我们通常使用 Date 类型来表示日期。
由于 JS 中的 Date 类型是在早期 Java 中的 java.util.Date 类基础上构建的,所以 JS 的 Date 类型使用的是自 UTC 1970年1月1日0时0分0秒(世界标准时间)起的毫秒数。比如2017年8月7号16时37分26秒, 用毫秒数表示就是 1502095046000。当然,我们实际使用中不需要手动去计算这些毫秒数,但是要理解这个数字的含义。
日期对象
通常我们调用 new Date() 获取当前时间,函数返回的是日期对象,这个对象有很多方法可以获取日期的信息。
1  | // 当前时间  | 
除此之外,我们还可以传入参数使用,如:
1  | var today = new Date(1453094034000); // by timestamp(accurate to the millimeter)  | 
其参数规则如下:
1  | // value 代表自1970年1月1日00:00:00 (世界标准时间) 起经过的毫秒数  | 
注:由于日期对象的方法实在有点多,这里就抽取几个常用的说明下,其余的可参考我们下面的参考资料文章。
静态方法
now 方法
es5 中添加了 Date.now() 方法,返回表示调用这个方法时的日期和时间的毫秒数。我们经常用此方法来测试代码的运行时间,这样就可以根据运行时间判断其性能了,如:
1  | 
  | 
但是对于不支持 Date.now() 方法的浏览器(如 IE8-),我们还可以使用+操作符把 Date 对象转换成字符串,也可以达到同样的目的,如下:
1  | // 记录开始时间  | 
实例方法
Getter
- getFullYear():根据本地时间返回指定日期对象的年份(四位数年份时返回四位数字)
 - getMonth():根据本地时间返回指定日期对象的月份(0-11)
 - getDate():根据本地时间返回指定日期对象的月份中的第几天(1-31)
 - getDay():根据本地时间返回指定日期对象的星期中的第几天(0-6)
 - getHours():根据本地时间返回指定日期对象的小时(0-23)
 - getMinutes():根据本地时间返回指定日期对象的分钟(0-59)
 - getSeconds():根据本地时间返回指定日期对象的秒数(0-59)
 - getMilliseconds():根据本地时间返回指定日期对象的微秒(0-999)
 - getTime():返回从1970-1-1 00:00:00 UTC(协调世界时)到该日期经过的毫秒数,对于1970-1-1 00:00:00 UTC之前的时间返回负值。
 
下面我们以一个简单的格式化时间来说明下上面方法的一些使用:
1  | // 将时间格式化为:YYYY-MM-DD HH:mm:ss  | 
当然对于格式化时间这么常用的功能,已经有Moment.js库来帮我们处理了。
Setter
- setFullYear():根据本地时间为指定日期对象设置完整年份(四位数年份是四个数字)
 - setMonth():根据本地时间为指定日期对象设置月份
 - setDate():根据本地时间为指定的日期对象设置月份中的第几天
 - setHours():根据本地时间为指定日期对象设置小时数
 - setMinutes():根据本地时间为指定日期对象设置分钟数
 - setSeconds():根据本地时间为指定日期对象设置秒数
 - setMilliseconds():根据本地时间为指定日期对象设置毫秒数
 - setTime():通过指定从 1970-1-1 00:00:00 UTC 开始经过的毫秒数来设置日期对象的时间,对于早于 1970-1-1 00:00:00 UTC的时间可使用负值。
 
对于该系列的方法,我们经常用于倒计时,如下:
1  | // 2017 年 IMWebconf 大会开始时间为: 2017-09-16 09:30:00  | 
