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、またはフォーマットを削除すると単に無効な日付になります。

でも :

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

うまく動作します。したがって、問題は3行目にあるとは思いません。そして今、私は混乱しました。この問題を解決するためのポインタはありますか?

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 に答える