Javascript中new Date的坑
来源:互联网 发布:零基础学化妆知乎 编辑:程序博客网 时间:2024/06/07 02:38
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)) { //...}
这种反直觉的设计很容易让人踩坑,以后还是用字符串的形式保险。
0 0
- Javascript中new Date的坑
- Javascript中new Date的坑
- Javascript中new Date的坑
- javascript中new Date()的浏览器兼容性问题
- javascript中new Date()的浏览器兼容性问题
- javascript中new Date()的浏览器兼容性问题
- javascript中new Date()的浏览器兼容性问题
- javascript中new Date()的浏览器兼容性问题
- javascript中new Date()的浏览器兼容性问题
- JavaScript new Date() 中灵活的构造参数【测试】!
- javascript中new Date()的浏览器兼容性问题解决方案
- javascript中new Date()在IE浏览器下的兼容性问题
- javascript中new Date()的浏览器兼容性问题IE8Nan
- JavaScript 中 Date() 和New Date()有什么区别?
- javascript 中的 new Date() 的使用总结
- javascript中IE浏览器不支持NEW DATE()带参数的解决方法
- javascript中IE浏览器不支持NEW DATE()带参数的解决方法 (转)
- javascript中IE浏览器不支持NEW DATE()带参数的解决方法
- Linux-查看文件个数
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- js style属性
- centos7安装ceph-jewel
- 修改ssh 默認端口 和禁止root通過ssh登錄
- Javascript中new Date的坑
- GridView 动态绑定列
- CocoaPods安装和使用及问题:Setting up CocoaPods master repo
- 排序算法总结
- js 中递归 与 回调函数
- 修改idea运行内存大小
- NS2 学习资料网站链接
- linux mv命令的用法
- tensorflow安装与测试