0

如果 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

4 回答 4

1

仅当日期格式为 YYYY-MM-DD 时,此比较才有效。如果val()是字符串(格式为 DD/MM/YYYY),您可以执行以下操作:

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

然后你可以比较它们。

于 2012-11-26T13:25:30.680 回答
1

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

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

您所做的是将 2 个字符串相互比较,并且在第三个位置,第一个字符串大于第二个字符串。

您应该使用Date来比较日期。

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

于 2012-11-26T13:30:47.203 回答
0

正如 Patrick James McDougle 所说,按字符串比较日期可能不是一个好主意。试试Date对象,如下所示:

$("#start").change(  function() {   
     var startDate = new Date($('#start').val());
     var endDate = new Date($('#due').val());
     if (startDate > endDate){
          $("#due").val($(this).val());
     }
});
于 2012-11-26T13:32:07.707 回答
0

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

于 2012-11-26T13:49:29.250 回答