Javascript中new Date的坑

Javascript中new Date的坑

在一段判断是否过期的js代码中是这么写的:

if (new Date() < new Date(2014, 9, 25)) {
    //...
}

后来发现过了9月25日竟然不过期,console.log打印一下new Date(2014, 9, 25)的值:

Sat Oct 25 2014 00:00:00 GMT+0800 (CST) 

竟然变成了10月25日!于是,判断是否过期的js代码形同虚设,永远也不会过期。

原来javscript中的new Date(year, month, day, hours, minutes, seconds, milliseconds)不能指定过去的时间。

而解决这个问题需要给new Date传递字符串格式的日期参数,代码如下:

if (new Date() < new Date('Sep 25, 2014')) {
    //...
}

【更新】

谢谢ievil在评论中指出问题的真正原因!

原来在js中月份是从0开始计算的,“9月”对应的值是8。只需要改成这样就能解决问题:

if (new Date() < new Date(2014, 8, 25)) {
    //...
}

这种反直觉的设计很容易让人踩坑,以后还是用字符串的形式保险。


转载:http://www.cnblogs.com/dudu/p/javascript_new_date.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值