`
AmwuYYGY
  • 浏览: 26676 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

JS日期比较 2013-01-31大于2013-02-01

 
阅读更多
先看下面的代码

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,所以结束日期小于生成日期。

可以把日期打印出来验证下:
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



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

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




对,就这么简单,不是系统BUG,程序员粗心而已
1
1
分享到:
评论
4 楼 cuisuqiang 2013-02-02  
其实,直接 > < 就行了
3 楼 kjj 2013-02-02  
奇怪的是他们只对月从0开始其他都是1,哥早换joda time了,ja也是模仿java的
2 楼 cnsuifeng 2013-02-01  
为什么非得转换成时间再比较,直接比较字符串不也可以吗
1 楼 zljwade 2013-02-01  
不错,我们这也遇到这个问题了。。

相关推荐

    javascript日期验证之输入日期大于等于当前日期

    本文实例分析了javascript输入日期大于等于当前日期验证代码,分享给大家供大家参考,具体如下: [removed] $(function () { var d = new Date(); var strDate = getDateStr(d); $("#beginTime").val(strDate)...

    纯JS方法比较日期之间大小(实用)

    纯用JS方法来比较日期大小, 得到域中日期信息A,B,然后判断A在N天后, 是否大于B. 原创...

    javascript组件:jsvalidation-1_0b4

    javascript实现表单验证,实现的功能: 1.取值非空 2.必须为整数 3.必须为双精度数 4.必须为普通英文字符(字母,数字,下划线) 5.必须为中文字符 6.最小长度 7.最大长度 8.是否为Email格式 9.是否为日期...

    支持多种调用模式js日期选择

    起始日期功能 ,自定义格式,限制日期的范围,选择今天以前的日期(包括今天),选择今天以后的日期(不包括今天),选择本月的日期1号至本月最后一天,选择今天7:00:00至明天21:00:00的日期,前面的日期不能大于后面的日期且两...

    基于jquery js自定义sql条件查询

    1.当条件值是日期时,格式为:2013-01-01; 2.当条件值是字段串时,中间含有英文单引号“'”时,请用两个单引号“''”表示,如:AA''A ; 3.当条件为“包含”或“不包含”时,条件值不能是日期格式 ; 4.当条件为...

    JavaScript对象验证库js-validator.zip

    js-validator 是 Laravel 风格的 JavaScript 对象验证库。使用 js-validator 来验证对象或者 JSON 是否符合规则非常方便,而且具有很好的可扩展性。举个例子var example = {  text: 'Hello world!',  date: ...

    js检测判断日期大于多少天的方法

    主要介绍了js检测判断日期大于多少天的方法,涉及javascript操作日期的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    JS判断当前日期是否大于某个日期的实现代码

    上面是个图片啊,想要看效果,自己打吧,学习不能偷懒

    js日期选择器.zip

    多功能日期选择器 1. 在控件下面或右面弹出日历组件(默认是在下面弹出) ...5. 日期范围限制,1只能选择某个日期前或者后的日期,2两个文本框,前面的日期不能大于后面的日期,后面的不能小于前面的日期。

    JS 日期比较大小的简单实例

    1,比较日期大小的js代码 代码如下:[removed]var beginDate=$(“#beginDate”).val(); var endDate=$(“#endDate”).val(); var d1 = new Date(beginDate.replace(/\-/g, “\/”)); var d2 = new Date(endDate....

    javascript日期、时间大小的比较

    javaScript中实现时间、日期大小的比较 主要是用于在使用日期控件时比较您选择的时间是否大于系统当前时间.....

    js验证表单 js验证表单

    js表单验证控制代码大全 /* 目录: 1:js 字符串长度限制、判断字符长度 、js限制输入、限制不能输入、textarea 长度限制 2.:js判断汉字、判断是否汉字 、只能输入汉字 3:js判断是否输入英文、只能输入英文 4:js只能...

    电脑端日期控件 JS + HTML

    日期 电脑端日期控件 开始时间 至 结束时间 插件

    bootstrap-advanced-sortable

    bootstrap-advanced-sortable.js 介绍 Bootstrap-table 表头筛选控件 软件架构 利用Bootstrap-table特性,在表头添加筛选排序,支持文本搜索,数值搜索,日期搜索,单选和复选。 依赖包 依赖包 版本 jQuery v3.2.1 ...

    常用js大全,javascript校验大全

    js大全 . 1.1 全是数字.. 3 1.2 限制 期限 不能大于 100 年.. 4 1.3 将日期格式由yyyy-MM-dd,转换为yyyymmdd,以直接比较两个日 期的大小.. 4 1.4 判断字符串是否全部由数字组成. 5 1.5 判断字符串是否全部由字母...

    100个直接可以拿来用的JavaScript实用功能代码片段(1-10)

    31、原生JavaScript判断是否移动设备 32、原生JavaScript判断是否移动设备访问 33、原生JavaScript判断是否苹果移动设备访问 34、原生JavaScript判断是否安卓移动设备访问 35、原生JavaScript判断是否Touch屏幕 36、...

    js脚本大全 js验证大全 压缩包

    js大全 . 1.1 全是数字.. 3 1.2 限制 期限 不能大于 100 年.. 4 1.3 将日期格式由yyyy-MM-dd,转换为yyyymmdd,以直接比较两个日 期的大小.. 4 1.4 判断字符串是否全部由数字组成. 5 1.5 判断字符串是否全部由字母...

    javascript简单比较日期大小的方法

    本文实例讲述了javascript简单比较日期大小的方法。分享给大家供大家参考,具体如下: //获取起始日期 var startDate=document.all.startdate.value; //转换为日期格式 startDate=startDate.replace(/-/g,"/"); //...

Global site tag (gtag.js) - Google Analytics