Javascript中new Date的坑
来源:互联网 发布:蚌埠学院网络 编辑:程序博客网 时间:2024/06/07 15:57
在一段判断是否过期的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()带参数的解决方法
- Android-电量优化
- Linux(centos)操作技巧汇总----->持续更新中
- ionic build ios 没有任何输出和响应
- LeetCode 292 Nim Game
- SDWebImagePrefetcher 类的引用
- Javascript中new Date的坑
- 面试之路(26)-面试相关的位运算总结
- 获取用户原始IP地址
- 经典 Spring 面试题和答案
- 深入理解Java的接口和抽象类
- easyui-DataGrid基本用法
- 栈的应用之中缀表达式转后缀
- Python3使用requests模块显示下载进度
- C++中的随机数函数