就 06 和 6 的差别,求大神解答下。
另外为啥是 08:00:00?
和firefox也不同,firefox也不支持new Date('2016-02-6')这种写法,为啥chrome宽容这么多?
就 06 和 6 的差别,求大神解答下。
另外为啥是 08:00:00?
和firefox也不同,firefox也不支持new Date('2016-02-6')这种写法,为啥chrome宽容这么多?
HTML 5 <input type="date" />
返回的日期格式是月份/日期一位补零的,Chrome 中直接传给 new Date()
,它就会当做零时区当日零点来返回本机时区地方时(比如 8:00 北京时间)……
于是,前后端不一致、不同系统日期控件/算法不一致,就把我们前端小组搞晕了……
最终,我用了个简单粗暴的方法 ——
var TimeStamp = (new Date( $('input[type="date"]')[0].value.replace('-0', '-') )) / 1000;
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
Firefox 中,
和 Chrome 中的:
结果是一样的,Firefox 中显示时以
Z
结束,时区是 UTC/GMT,而 Chrome 中显示的是 CST 就是 UTC+8。关于 Chrome 为什么那么宽容,就是两个 JavaScript 引擎具体实现的问题。根据规范,当 Date 的参数是字符串时,应该符合 RFC 2822/ISO 8601/ECMA 262,对于不符合的,Firefox 报错,Chrome 则有自己的一套逻辑尽可能不出错。StackOverflow 上有个有趣的问题 is there any workaround for broken v8 date parser? 回答中有人引用了 V8 的源码,可以看到 V8 确实工作的方式有所不同。