如果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());
}
});
});
答案 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)。后者是一个较大的数值,但它是较早的日期。