zoukankan      html  css  js  c++  java
  • 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)) {
        //...
    }

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

  • 相关阅读:
    Commix命令注入漏洞利用
    漏洞扫描
    信息搜集神器
    peepingtom
    自动化安装一些渗透工具的脚本
    MITMF
    Xssf配合metaspolit使用
    Beef安装与简单使用
    Linux安全检测常用方法
    cobaltstrike3.8服务器搭建及使用
  • 原文地址:https://www.cnblogs.com/dudu/p/javascript_new_date.html
Copyright © 2011-2022 走看看