比较2个日期(如果其中一个日期在下一年,则失败)

时间:2012-11-26 13:19:42

标签: javascript jquery

如果2个日期在同一年内,则以下代码可以正常工作,但如果结束日期是在下一年,则似乎会中断。有人能指出我正确的方向吗?

两个变量都是日期选择器,格式为DD / MM / YYYY。

提前致谢。

$(document).ready(function() {
    $("#start").change(  function() {   
        var startDate = $('#start').val().replace('/','');
        var endDate = $('#due').val().replace('/','');
        if(startDate > endDate){
           $("#due").val($(this).val());
        }

    });
});

4 个答案:

答案 0 :(得分:1)

此比较仅在日期格式为YYYY-MM-DD时有效。如果val()是一个字符串(格式为DD / MM / YYYY),您可以这样做:

var startDate = $('#start').val().split('/').reverse().join('-');
var endDate = $('#due').val().split('/').reverse().join('-');

然后你可以比较它们。

答案 1 :(得分:1)

如果您的开始日期类似于10/12/2012并且您的结束日期是10/01/2013,请查看您的代码及其生成的内容:

"10/12/2012" -> "10122012”
"10/01/2013" -> "10012013"

你要做的是比较两个字符串,在第三个位置,第一个字符串大于第二个字符串。

您应该让我们Date来比较日期。

如果您想要更轻松,请查看moment.js

答案 2 :(得分:0)

就像帕特里克詹姆斯麦克杜格所说,用字符串比较日期可能不是一个好主意。试试Date对象,如下所示:

$("#start").change(  function() {   
     var startDate = new Date($('#start').val());
     var endDate = new Date($('#due').val());
     if (startDate > endDate){
          $("#due").val($(this).val());
     }
});

答案 3 :(得分:0)

您正在比较1232013(2013年1月23日)和12232012(12/23/2012)。后者是一个较大的数值,但它是较早的日期。