先看下面的代码

Javascript代码  
  1. startDate = "2013-01-31".split('-');
  2. endDate = "2013-02-01".split('-');
  3. var startTime = new Date(startDate[0],startDate[1],startDate[2]);
  4. var endTime = new Date(endDate[0],endDate[1],endDate[2]);
  5. if(startTime>endTime){
  6. document.writeln("==========结束日期小于生成日期==========");
  7. }else{
  8. document.write("==========结束日期大于生成日期===========");
  9. }
startDate = "2013-01-31".split('-');
endDate = "2013-02-01".split('-');var startTime = new Date(startDate[0],startDate[1],startDate[2]);
var endTime = new Date(endDate[0],endDate[1],endDate[2]);if(startTime>endTime){document.writeln("==========结束日期小于生成日期==========");}else{document.write("==========结束日期大于生成日期===========");}

结果是:
==========结束日期小于生成日期==========

有些人说这是系统的BUG,其实,是程序员太粗心了。

Date构造函数第一个是年,第二是月,第三是日。
W3cshool中JavaScript Date 对象参考手册对getMonth()的描述是:从 Date 对象返回月份 (0 ~ 11)。也就是月份是从0开始的。2013-01-31传01进去相当于是设置日期为2月,再传31进去时,由于2月没有31只有28天,向前进28天,变成2013-03-03,而与之比较的是2013-02-01,所以结束日期小于生成日期。

可以把日期打印出来验证下:

Javascript代码  
  1. document.writeln("<br>");
  2. document.writeln("开始时间:"+startTime);
  3. document.writeln("<br>");
  4. document.writeln("结束时间:"+endTime);
document.writeln("<br>");
document.writeln("开始时间:"+startTime);
document.writeln("<br>");
document.writeln("结束时间:"+endTime);

结果是:
开始时间:Sun Mar 03 2013 00:00:00 GMT+0800
结束时间:Fri Mar 01 2013 00:00:00 GMT+0800

知道原因,就知道怎么处理了,办法很简单:

Javascript代码  
  1. var startTime = new Date(startDate[0],startDate[1]-1,startDate[2]);
  2. var endTime = new Date(endDate[0],endDate[1]-1,endDate[2]);
var startTime = new Date(startDate[0],startDate[1]-1,startDate[2]);
var endTime = new Date(endDate[0],endDate[1]-1,endDate[2]);

对,就这么简单,不是系统BUG,程序员粗心而已

转载于:https://www.cnblogs.com/shhaoran/archive/2013/02/02/2924542.html

JS日期比较 2013-01-31大于2013-02-01相关推荐

  1. 世界之窗3的广告过滤规则 2013.5.31更新

    世界之窗3升级后主站论坛恢复后,更新了一下规则! 2013.5.31更新:优化遍历DOM逻辑,整个脚本代码不足50行! 终于做了个在线更新,不用在网盘上做更新了!! 在世界之窗3中进我的帖子点击那个绿 ...

  2. (2013.01.18-2013.07.15)179天的学习小记

    (2013.01.18-2013.07.15)179天的学习小记 好久没有做个小小结咯,我的第一天学习小记是从2011.07.04开始,那时说好了在大学期间要每天记录,自我监督,就这样,这事也干了两年 ...

  3. SFB 项目经验-51-某上市企业2千人Exchange 2013升级2016高可用之伤01

    SFB 项目经验-51-某上市企业2千人Exchange 2013升级2016高可用之伤01(带病撰写项目实战笔记) 问题描述: 2000人企业使用Exchange 2013邮件服务器标准版,n年! ...

  4. js日期格式判断(2018/01/30) -方法 小时分秒格式判断((HH:MM)

    案例如下: //日期格式判斷         function lo_isDatePart(dateStr) {             var parts;             if (date ...

  5. js 日期对象 31 号 setMonth 的锅

    前言 需求:获取当前日期的前一个月份 当月有 31 天时,JS 日期对象 setMonth 问题 1. 一般做法 当前日期如果不是 31 号, 是没问题的,是 31 号就会有问题: // 比如今天是 ...

  6. js 日期对象 31 号 setMonth 的锅 1

    前言 需求:获取当前日期的前一个月份 当月有 31 天时,JS 日期对象 setMonth 问题 1. 一般做法 当前日期如果不是 31 号, 是没问题的,是 31 号就会有问题: // 比如今天是 ...

  7. JS - 日期时间比较函数

    JS日期比较(yyyy-mm-dd) function duibi(a, b) {var arr = a.split("-");var starttime = new Date(a ...

  8. 数组排列、数组迭代、JS日期

    -------W3School学习笔记-------- 数组排列 1.sort() 方法以字母顺序对数组进行排序如果数字按照字符串来排序,则 "25" 大于 "100&q ...

  9. 史上最详细的js日期正则表达式分享

    最简单的正则 如 : /d{4}-/d{2}-/d{2} 但是实际情况却不是那么简单,,要考虑,有效性和闰年等问题..... 对于日期的有效范围,不同的应用场景会有所不同.MSDN中定义的DateTi ...

  10. js 日期比较大小,js判断日期是否在区间内,js判断时间段是否在另外一个时间段内...

    /** * 日期解析,字符串转日期 * @param dateString 可以为2017-02-16,2017/02/16,2017.02.16 * @returns {Date} 返回对应的日期对 ...

最新文章

  1. 从疫情到求职寒冬,我的算法求职经历
  2. linux 创建crontab文件位置,linux - 如何通过脚本创建crontab - Ubuntu问答
  3. [机器学习] Boosting算法4 --- LightGBM介绍与分布式
  4. mysql 5.7.25 的安装与 安装错误修改 适用于5.7解压版
  5. java formatter()_Java Formatter locale()用法及代码示例
  6. .NET Core 1.0发布:微软开源跨平台大布局序幕
  7. 如何快速成长为技术大牛?阿里资深技术专家的经验告诉你
  8. 苹果谷歌双双被曝,你的手机正在窃听你的生活
  9. Go 语言的垃圾回收算法被吹过头?与Java比如何?
  10. nginx工作原理与配置
  11. 计算机光盘无法格式化,怎么格式化光盘啊??求解!!
  12. 熹妃传服务器更新维护2019年8月28,熹妃传厨艺大赛高分攻略大全
  13. CDlinux使用与安装
  14. 炮兵阵地图文详解NOI2001/POJ1185(状态压缩)
  15. Xilinx Zynq-7000嵌入式系统设计与实现-电子书下载-pdf
  16. Pycharm编译代码时出现“SyntaxError: Non-UTF-8 code starting with ‘\xca‘ in file ...“
  17. 北京化工大学2022-2023-1 ACM集训队每周程序设计竞赛(8)题解
  18. Postman实现接口自动化测试
  19. 儿童玩具和儿童用品美国CPC认证ASTM测试CPSIA标准大合集
  20. 【线性代数 宋浩】P3行列式的性质

热门文章

  1. Apache2.2整合PHP5.2
  2. Struts1.x系列教程(19):LookupDispatchAction类处理一个form多个submit
  3. 怎样解决An internal error has occurred. Index out of bounds
  4. [备忘]java读取与写入文件的五种方式
  5. 重装 IDEA 再也不怕了,一招搞定配置同步!
  6. MySQL 在并发场景下会遇到的问题及解决方案~
  7. Linux!为何他一人就写出这么强的系统,中国却做不出来?
  8. 别用Date了,Java8新特性之日期处理,现在学会也不迟!
  9. 使用 Spring Boot 开发 Web 项目
  10. 看完这篇还不了解 Nginx,那我就哭了!