1

所以,我有这个代码:

$('#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,或者如果我删除格式,则只是 Invalid Date。

然而 :

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

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

4

4 回答 4

2

setDate只需设置月份中的某一天,您可以使用setFullYearandsetMonth或者您可以执行此操作。

$('#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 返回毫秒。

于 2012-10-30T14:13:24.660 回答
1

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

end_date.setDate(start_date.getDate() + duration);
于 2012-10-30T14:16:08.947 回答
0

由于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)
于 2012-10-30T14:18:26.250 回答
0
$('#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

于 2012-10-30T14:21:28.670 回答