Date.parse 的浏览器兼容性说明

Author Avatar
Teeeemoji 10月 27, 2017
  • 在其它设备中阅读本文章

Date.parse 的浏览器兼容性说明

背景

项目中的时间组件出现了浏览器兼容性问题, bug 排查了半天, 得到如下结果

时间格式是: time(YYYY-MM-DD HH:mm:dd)

使用如下方法构造 Date 对象: timeObj = new Date(time);

在 Chrome 下风平浪静, 正确获得了 timeObj

在 safari 下, 输出 Invalid Date

资料搜索

先从 MDN 文档开始, Date 的 MDN 文档 , 关于 Date 的构造方法的new Date(datestring) 形式的入参介绍:

(Note: parsing of date strings with the Date constructor (and Date.parse, they are equivalent) is strongly discouraged due to browser differences and inconsistencies.)细红线描述的意思是, 传入 Date 构造方法以及 Date.parse 中的日期字符串格式, 强依赖于浏览器的实现.

这说明随意使用 Date 构造对象或使用 Date.parse 方法转换时间格式, 是有风险的

那么有没有一种 datastring 格式支持全平台浏览器呢?这里要点击进入粗红线指向的 协议文档 version of ISO8601, 找到 15.9.1.15 Date Time String Format


规范的全平台通用时间格式的: YYYY-MM-DDTHH:mm:ss ….. 中间要有个 T 的

总结

官方文档, 各种协议文档, 是解决兼容性的好帮手!

如果官方文档和协议文档都不能帮助你解决问题, 再去 googl* 各种扫操作吧.

This blog is under a CC BY-NC-SA 3.0 Unported License
本文链接:http://teeeemoji.xyz/2017/10/27/learn-new-date/