前言
- 遇到时间处理就会本能的感觉有点麻烦,因为时间的种类和格式有很多。
- 比如:UTC、UTC偏移量、时间戳、系统时间
- 因此处理时间首先要分清不同类型的时间,还要清楚不同时间类型之间的转化,然后format成正确的展示格式。
不同类型的时间
UTC时间
- 又称世界统一时间,世界标准时间,国际协调时间,无时区时间
- 对于世界上任何一台电脑,此刻的UTC时间都是相同的
系统时间
- 系统时间表示在计算机系统中的时间与日期
- 例如:
- UNIX时间:当前时间距UTC时间(1970年1月1日00:00:00)之间的相差的秒数
- 我的计算机使用的是UNIX系统
- 因此当前的系统时间就是UTC时间到当期经历的秒数了
- UNIX时间:当前时间距UTC时间(1970年1月1日00:00:00)之间的相差的秒数
本地时间(自己引入的概念)
- 在我看来就是你所在时区的时间咯
UTC偏移量
- UTC时间和特定地点时间(本地时间)的差异
- 其单位为小时和分钟
- 它通常以 ±[hh]:[mm]、±[hh][mm]、或 ±[hh]的格式显示
时间戳
- Unix时间戳表示当前时间到1970年1月1日00:00:00 UTC对应的秒数
注意,有个很坑爹的地方,Unix时间戳是秒数,但是JavaScript(Date对象)内的时间戳指的是当前时间到1970年1月1日00:00:00 UTC对应的毫秒数,和unix时间戳不是一个概念,差了1000倍。
new Date()产生的时间
- 是本地时间的一个字符串表示
- 如果用一个数字n作为Date构造函数的参数,那么new Date产生的时间字符串就是UTC时间过了n毫秒之后的时间
不同时间字符串格式
ISO 8601
- 日期和时间的表示方法
- YYYY-MM-DDThh:mm:ss ± timezone(时区用HH:MM表示)
- 例子
- 1997-07-16T08:20:30Z
- z是utc标准时区 - 1997-07-16T19:20:30+01:00
- +01:00 是东一区时区
- 此时的utc时间应该是
- 1997-07-16T18:20:30Z
js中时间处理器
Date对象
- 返回不同类型和格式的时间
- new Date():当前时区时间
- 以及Date对象的各种to方法,可以将通过Date构造函数构造出来的时间装换成各种类型或者格式的时间:UTC、ISO等等
- 参考:http://javascript.ruanyifeng.com/stdlib/date.html
moment.js的npm库
- 通过moment(各种类型的时间)就可以产出当前时区的时间
- 然后format成为需要的格式
- 参考http://momentjs.cn/docs/
网友评论