问个关于 js 里面的 Date 解析问题

2014-07-17 00:21:30 +08:00
 no13bus
Date.parse('2014-07-16 16:12:30')返回直为1405498350000
Date.UTC(2014,7,15, 16,33,43)返回直为1408120423000
这2个数值之间相差728个小时,觉得也不是因为时区的问题把。不明白。
2874 次点击
所在节点    JavaScript
6 条回复
wxt2005
2014-07-17 00:39:35 +08:00
因为你用 2014,7,15 这种格式传值的时候,月份是从0开始数的。
所以实际上这是8月15日了。
jsonline
2014-07-17 00:50:47 +08:00
差了一个月,经典的坑。专门用来坑新手的。
jsonline
2014-07-17 01:09:59 +08:00
你如果要问为什么JS这么坑,其实是因为JS诞生的时候直接照搬了Java 1.0的Date对象。
所以 Java 1.0 的 Date 为什么是这样的呢?是因为 Java 1.0 遵循了一份老旧的 C 语言的标准(the old standard (POSIX) localtime C function http://linux.die.net/man/3/localtime)

这个坑的由来和 JS 的 NaN 坑是多么的类似啊,啊哈哈。
SoloCompany
2014-07-17 02:45:02 +08:00
这个问题的标准回答可以套用典型的 RTFM 了
coolicer
2014-07-17 08:24:33 +08:00
学习了。
Tonni
2014-07-17 09:39:33 +08:00
可以考虑用momentjs处理时间

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/123034

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX