繁体   English   中英

JavaScript setDate()返回无效日期

[英]JavaScript setDate() returns Invalid Date

所以,我有这个代码:

$('#end_date').click(function() 
{
    var start_date = new Date($('#start_date').val());
    var duration = parseInt($('#duration').val());

    var end_date = new Date();
    end_date.setDate(start_date + duration);

    $('#end_date').val($.datepicker.formatDate('yy-mm-dd', end_date));
});

我认为,应该从表单中获取开始日期,并在其中添加一些天(持续时间),并在其他文本字段中显示输出。 但是,我得到的结果总是NaN-NaN-NaN,或者如果我删除格式,则只是无效日期。

但是:

$('#end_date').val($.datepicker.formatDate('yy-mm-dd', start_date));

工作得很好。 所以我不认为问题出在第3行。 现在我很困惑。 任何解决这个问题的指针?

setDate只设置月份的日期,你可以使用setFullYearsetMonth或者你可以这样做。

$('#end_date').click(function() 
{
    var start_date = new Date($('#start_date').val());
    var duration = parseInt($('#duration').val());

    var end_date = new Date();
    end_date.setDate(start_date.getMilliseconds() + duration.getMilliseconds());

    $('#end_date').val($.datepicker.formatDate('yy-mm-dd', end_date));
});

希望start_Date和duration返回毫秒。

根据这个问题 ,你应该尝试:

end_date.setDate(start_date.getDate() + duration);

由于setDate仅设置月中的日期,您可以这样做:

var duration = parseInt($('#duration').val(), 10); // don't forget the radix!
var end_date = new Date();
end_date.setTime(start_date.getTime()); // makes end_date a copy of start_date
end_date.setDate(start_date.getDate() + duration); // changes the day of the month (and recomputes months and years)
$('#end_date').click(function() 
{
    var start_date = new Date($('#start_date').val());
    var duration = parseInt($('#duration').val());

    var end_date = new Date();
    end_date.setTime(start_date.getTime() + (duration*24*60*60*1000));//convert duration to miliseconds

    $('#end_date').val($.datepicker.formatDate('yy-mm-dd', end_date));
});

这应该工作,将持续时间添加到start_date的时间并将该时间设置为end_date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM