问一个 js 的日期比较问题

2016-02-01 15:57:50 +08:00
 LEFT

alert(new Date(2016,1,31) > new Date(2016, 2, 1));
返回结果是 ture
alert(new Date(2016,1,30) > new Date(2016, 2, 1));
返回结果是 false

请问为什么这样子?

2508 次点击
所在节点    JavaScript
7 条回复
jdz321
2016-02-01 16:25:01 +08:00
month 从 0 开始算 new Date(2016,1,31) == 2016 年 2 月 31 日 然而 2 月只有 29 天 so
new Date(2016,1,31) == 2016 年 3 月 2 日

下面那个同理
FrankFang128
2016-02-01 16:49:48 +08:00
字符串字典序
lwbjing
2016-02-01 17:03:17 +08:00
字符串进行了比较... 转成时间戳可解。
LEFT
2016-02-01 17:04:17 +08:00
@jdz321
@FrankFang128 非常感谢!
LEFT
2016-02-01 17:05:07 +08:00
@lwbjing 太感谢了
bitsmix
2016-02-01 17:13:59 +08:00
@jdz321 因为闰年的缘故,其实是 1 号 XD

> new Date(2016,1,30).toLocaleString()
'2016/3/1 上午 12:00:00'
libook
2016-02-02 09:08:45 +08:00
一楼正解。
安利一个库, moment.js

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

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

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

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

© 2021 V2EX