safari new Date( ) 时间报错 Invalid Date

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:0020040503T173008+08

所以上述的问题 改为new Date('2018-09-06T08:06:03+08:00') 就同时兼容浏览器。

此问题虽然叙述的很混乱,但是我觉得改一个兼容性问题,我们首先要弄清楚原理,再将其修正。

谢谢观看

猜你喜欢

转载自blog.csdn.net/qq_34849240/article/details/80736624