1

重複の可能性:
今日の日付に日数を追加するにはどうすればよいですか?

X日(Xは前に指定した数値)を特定の日付に追加したいと思います。

例えば。日付は29/11/2012(形式:)DD/MM/YYYYであり、この日付に日を追加したい5ので、出力は。になります03/12/2012

私は何を試しましたか:

var days_to_add = 5;
$myyear = 2012;
$mymonth = 11;
$myday = 29;
date = new Date();
date.setFullYear($myyear,$mymonth,$myday);
date.setDate(date.getDate()+(days_to_add-1));
alert(date.getDate()+'/'+date.getMonth()+'/'+date.getFullYear());

動作していますが、日付が特定の日付の翌月に渡らない場合にのみ、それ以外の場合は出力は良好です。

そのための解決策はありますか?

4

2 に答える 2

3

このようなもっと簡単なものはありますか?

 var fiveDaysLater = new Date( existingDate.getTime() );
 fiveDaysLater.setDate(fiveDaysLater.getDate() + 5);
于 2012-11-05T17:17:26.523 に答える
1

setDate関数は必要に応じて年または月を自動的にインクリメントするため、問題は日の加算ではありません。

指定したパラメーターが予想範囲外の場合、setDateはそれに応じてDateオブジェクトの日付情報を更新しようとします

しかし、あなたはあなたの日付を正しく作成していません。変化する

$myyear = 2012;
$mymonth = 11;
$myday = 29;
date = new Date();
date.setFullYear($myyear,$mymonth,$myday);

$myyear = 2012;
$mymonth = 11;
$myday = 29;
date = new Date($myyear,$mymonth,$myday);

Dateコンストラクターは[0、11]で1か月かかります。11を12月ではなく11月にしたい場合は、

date = new Date($myyear,$mymonth-1,$myday);

そしてgetMonth、[0、11]に整数を返しますが、これも驚いたかもしれません。date.getMonth()+1通常の日付フォーマットが必要な場合は、出力する必要があります。

alert(date.getDate()+'/'+(date.getMonth()+1)+'/'+date.getFullYear());

先行ゼロを追加したい場合は、これを行うことができます:

alert(
     (date.getDate()<10 ? "0" : "") + date.getDate()
     +'/'+
     (date.getMonth()<9 ? "0" : "") + (date.getMonth()+1)
     +'/'+
     date.getFullYear() 
);

デモンストレーション

日付の操作が多い場合は、date.jsなどのライブラリの使用を検討する必要があることに注意してください。

于 2012-11-05T17:22:04.687 に答える