js时间标准化
最近翻看了一些书,了解了一下现在的时间变准化,时间一直都是有兼容性问题,以前写h5的时候也没有认真写一篇博客来记录这些兼容性的解决方式,今天就来总结一下。
日期时间标准
时间标准主要是
原子时 · 协调世界时(UTC) · 格林尼治平时(GMT) 如果想看更多,建议可以此链接,它说的很详细,UTC和GMT为什么时世界时间标准。
参考链接https://www.jb51.net/article/40758.htm
在前端领域,我们主要是 浏览器的兼容,显然易见,date这个api兼容并不是很好。举例列一下我以前遇见的bug
safari
new Date('2018-09-06 08:06:03') // Invalid Date
chrome
new Date('2018-09-06 08:06:03') // Thu Sep 06 2018 08:06:03 GMT+0700 (印度支那时间)
此bug 主要原因就是没有按照标准时间来写。
国际标准化组织ISO表示如下
- 日期表示法
年为4位数,月为2位数,月中的日为2位数
例如,日期(2013年8月16日)可表示为2013-08-16,或20130816。
- 日历星期和日表示法
可以用2位数表示本年内第几个日历星期
每个日历星期从星期一开始,星期日为第7天
- 时间表示方法
小时、分和秒都用2位数表示,对UTC时间最后加一个大写字母Z,其他时区用实际时间加时差表示。如UTC时间下午2点30分5秒表示为
14:30:05Z或143005Z
,当时的北京时间表示为22:30:05+08:00或223005+0800
,也可以简化成223005+08
- 日期和时间组合表示法
合并表示时,要在时间前面加一大写字母T,如要表示北京时间2004年5月3日下午5点30分8秒,可以写成
2004-05-03T17:30:08+08:00
或20040503T173008+08
所以上述的问题 改为new Date('2018-09-06T08:06:03+08:00')
就同时兼容浏览器。
此问题虽然叙述的很混乱,但是我觉得改一个兼容性问题,我们首先要弄清楚原理,再将其修正。
谢谢观看