博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript中new Date的坑
阅读量:5908 次
发布时间:2019-06-19

本文共 539 字,大约阅读时间需要 1 分钟。

在一段判断是否过期的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')) {    //...}

【更新】

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

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

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

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

转载地址:http://nmppx.baihongyu.com/

你可能感兴趣的文章
常见JVM内存异常分析
查看>>
针对不同浏览器内核css写法
查看>>
ubuntu下添加gimp的ppa
查看>>
使用Java8实现自己的个性化搜索引擎
查看>>
龙家贰少的MarkDown学习笔记
查看>>
查看端口占用命令
查看>>
arm9时钟及定时器
查看>>
vi 常用命令
查看>>
计算机信息系统集成资质管理办法(试行)信部规(1999)1047号
查看>>
iOS --头文件PrefixHeader
查看>>
ActiveMQ message trust Error
查看>>
C Primer Plus 第6章 C控制语句:循环 6.10 嵌套循环
查看>>
抓包工具Charles
查看>>
码云项目100,水一发
查看>>
CLRS 4.2 Exercises
查看>>
redis启动警告处理
查看>>
【python初级】010-构造方法,属性和迭代器
查看>>
Textillate.js – 实现动感的 CSS3 文本动画的简单插件(用法详情&只支持现代浏览)...
查看>>
项目 调dubbo接口 异常总结
查看>>
通过Gearman实现MySQL到Redis的数据复制
查看>>