在实际应用中,我们常常需要用到日期或者时间等,而在 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 |