所以,我有这段代码:
$('#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行。现在我很困惑。任何解决此问题的指针?
答案 0 :(得分:2)
setDate
只设置当月的日期,您可以使用setFullYear
和setMonth
,也可以这样做。
$('#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返回毫秒。
答案 1 :(得分:1)
根据this question,您应该尝试:
end_date.setDate(start_date.getDate() + duration);
答案 2 :(得分: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)
答案 3 :(得分: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