0

パラメータを混同しているだけだと思いますが、100回ほどチェックしました。

私がこれを行う場合:

console.log(new Date(2012, 12, 14, 0, 26, 15, 0));

私は得る:

Mon Jan 14 2013 00:26:15 GMT+0100 (CET)

しかし、私が期待しているのは次のとおりです。

Fri Dec 14 2012 00:26:15 GMT+0100 (CET)

この結果が得られるのはなぜですか? Date-constructor のフォーマットはyear, month, day, hour, minute, second, millisecond.

ここで何が欠けているのか誰にも分かりますか?

4

1 に答える 1

5

Javascript の月の数字は 0 ベースです。0=1 月、11=12 月。

だからあなたが欲しいのはこれです:

console.log(new Date(2012, 11, 14, 0, 26, 15, 0));

はい、これは漠然とばかげています。その背後にあるロジックは次のとおりです。通常、月の名前を表示する必要があり、それらを取得する論理的な方法は、月番号でインデックス付けされた配列として名前を格納することです。配列のインデックスは 0 ベースです。したがって、月番号は 0 から始まる必要があります。

誰かが 1 を引くことや、13 ポインター配列の要素を無駄にすること、または何かを行うことができなかったため、何十年にもわたるプログラマーの苛立ちと驚き。

(これは、平日が 0 = 日曜日から 6 = 土曜日まで番号付けされるという事実の背後にある同じロジックです。1 = 月曜日から 7 = 日曜日の ISO 標準と同じモジュロ 7 であるため、これはうまくいきました。カレンダーの慣例と 1 対 0 ベースのカウント基準は、互いに相殺されました... :))

于 2012-12-15T14:16:26.387 に答える