11

問題なく動作するコードをJavascriptで書きました。でも、日付を入れると、日付October 20, 2013が返ってきましたOctober 19, 2013

同じことが年にも当てはまります2019,2024および2030(前の年と後でテストされていません)。

この問題は、私がテストしたすべてのブラウザー ( Google ChromeInternet ExplorerMozilla FirefoxOperaおよびSafari ) で発生します。

私が書くとき:

date = new Date("10/20/2013");
document.write(date);

私が得る結果は次のとおりです。

2013 年 10 月 19 日(土)23:00:00 GMT-0300(BRT)


なぜこれが起こっているのか、どうすればこの問題を解決できるのか教えてください。

4

2 に答える 2

14

2013 年 10 月 20 日は、BRST のカットオーバーです。したがって、ブラジル (BRST タイムゾーン) にいる場合は、BRT (UTC -3) から BRST (UTC-2) に移行します。

TimeAndDate.comから:

サンパウロの現在の時刻: 2013 年 5 月 22 日水曜日、午後 3 時 19 分 14 秒 BRT

サンパウロは 2013 年 10 月 20 日日曜日まで BRT にとどまり、BRST に移動します。

遷移は真夜中に発生し、真夜中から午前 1 時まではスキップされます。その日の時間を保証するには、次のことを試してください。

date = new Date("10/20/2013 01:00:00");

10/20/2013 01:00:00また、タイムゾーン指定として BRST を取得する必要があります。

この問題を確認したい DST に参加している米国のタイムゾーンにいる人のために。2013 年 3 月 10 日の米国の夏時間移行ポイントを使用します。この場合、午前 2 時が午前 3 時にスキップされます。

var d = new Date("03/10/2013 02:59:59")
alert(d);   // Returns 1:59:59 AM in the Standard Time Zone

var d = new Date("03/10/2013 03:00:00")
alert(d);   // Returns 3:00:00 AM in the Daylight Time Zone
于 2013-05-22T18:21:34.720 に答える
0

一部のブラウザーでは、Date.parse ('new Date(string)' と同じ) を使用すると、正しくない値が表示される場合があります。理由はわかりませんが、日付を作成する最良の方法は、 Date(year, month, day) コンストラクターを使用することです。

例:

console.log(new Date(2013, 10, 20))
于 2013-05-22T18:16:15.477 に答える