Date 对象和关于时间的一些坑
DebugMi 发布于 2018-01-06 11:00编辑于 2024-08-29 03:45阅读:
有时候用 Date.parse 方法去记录一些缓存时间的时候,发现不同设备或者浏览器返回的值是不一样的。
有这四个时间字符串:
const str1 = '1970-01-01 00:00:01'
const str2 = '1970/01/01 00:00:01'
const str3 = '1970-01-01T00:00:01'
const str4 = '1970-01-01T00:00:01Z'
Chrome 里分别用 Date.parse 去解析返回的是:
-28799000, -28799000, -28799000, 1000
安卓的微信浏览器:
-28799000, -28799000, 1000, 1000
iOS 的微信浏览器:
NaN, -28799000, 1000, 1000
etc.
可以看出其他的格式均可能有兼容问题。并且会带有当前时区去解析成 UTC 时间。
str4 是 ISO_8601 标准,最后的 Z 代表不带任何时区信息。因此是最稳的!
为了保证更稳,前端传给后端的数据不应该用时间戳,而应该用约定好的时间字符串
另外 web 的原生组件 input 是时间类型的时候,格式也需要固定为 1970-01-01T00:00:01。
<input type='datetime-local' value='1970-01-01T00:00:01' />
0