1

日付の月に追加しようとすると、11 月がスキップされます。これは11月のサマータイムのせいだと思います。

これは、私が望むよりも1日早くジャンプしたことを示すコードです:

var my_date = new Date(1377993599000);
console.log(my_date.toUTCString());

これは、「Sat, 31 Aug 2013 23:59:59 GMT」を出力します

my_date.setUTCMonth(my_date.getUTCMonth() + 3);
console.log(my_date.toUTCString());

これは、「Sun, 01 Dec 2013 23:59:59 GMT」を出力します

そして今、2つだけ追加しようとすると:

my_date.setUTCMonth(my_date.getUTCMonth() + 2);
console.log(my_date.toUTCString());

これは、「Thu, 31 Oct 2013 23:59:59 GMT」を出力します

日付をゼロに設定しようとすると:

my_date.setUTCMonth(my_date.getUTCMonth() + 3, 0);
console.log(my_date.toUTCString());

これは、「Thu, 31 Oct 2013 23:59:59 GMT」を出力します

これを修正するためのきれいなトリックを知っている人はいますか?

UTC 関数を捨てて、タイムゾーン オフセットを常に削除した方がよいでしょうか? 私がこれをした場合、それは実際に私の問題を解決しますか?

4

2 に答える 2

4

11 月 31 日はないので、月に 3 を足すと、次の月に繰り越さなければならず、12 月 1 日になります。

確実に月単位で前進するという問題は厄介です。実行する前に月日 ( .setDate()) を 1 に設定できますが、元の日付に関連するものに戻す方法を決定する必要があります。

于 2013-08-01T21:28:03.997 に答える