js Date转换毫秒数问题

为什么

Date.parse('2017-06-18');    //1497744000000
Date.parse('2017-6-18');    //1497715200000

返回的毫秒数是不一样的?

阅读 2.6k
2 个回答

new DateDate.parse 使用的是同样的解析规律,只是一个返回 Date object 另一个返回毫秒数,我们使用new Date来说明问题:

console.log(new Date('2017-06-18')) // Sun Jun 18 2017 08:00:00 GMT+0800 (CST)
console.log(new Date('2017-6-18')) // Sun Jun 18 2017 00:00:00 GMT+0800 (CST)

刚好差8个小时,所以返回的毫秒数就不一样咯。

JavaScript的规范保证了new Date("2017-06-18")的行为。new Date("2017-6-18")不符合规格格式,浏览器可以做任何事情(包括在不同的时区解释);

Chrome对待这些格式的解析产生差异 - firefox不会这样 - 所以建议使用规范中的日期格式,不要依赖浏览器处理任何“非标准”格式

请按照规范写代码!

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题