2

ユーザーが次にクリックすると、次の日に取得される単純なカレンダーを作成していました。非常に単純なコードです。

var dateSelected = new Date('02/06/2013'); //any date 
var day = new Date(dateSelected.getTime() + 24*60*60*1000);
alert(day.getDate());

それはすべての日付でうまく機能しますが、何らかの理由で、日付が2013年10月27日の翌日にはなりません

var dateSelected = new Date('10/27/2013');

手動で翌日の 10 月 28 日に移動すると、正常に動作し続けます。

なぜこれが起こるのですか?

更新:日付だけでなく時間も追加して修正しました:

var dateSelected = new Date('10/27/2013 12:00:00');
4

4 に答える 4

9

これはあなたのタイムゾーンが原因であると強く疑っていますが、残念ながら私たちにはわかりません.

2013 年 10 月 27 日に、多くのタイム ゾーンが 1 時間に「後退」します。つまり、1 日の長さは事実上 25 時間になります。したがって、元の値に 24 時間を追加しても、1 日の最初の 1 時間以内に始まった場合、日は変わりません。

基本的に、実際に 1 日を追加しようとしているのか、24 時間を追加しようとしているのかを判断する必要があります。これらは同じものではありません。また、どのタイム ゾーンに関心があるかを調べる必要もあります。残念ながら、Javascripts の日付/時刻 API についてはよくわかりませんが、これが問題の原因であることはほぼ間違いありません。

于 2013-06-02T16:42:42.563 に答える