ホームページ > 記事 > ウェブフロントエンド > 月に 9 を指定すると、JavaScript の Date コンストラクターが 10 月を返すのはなぜですか?
JavaScript の日付コンストラクターで月の不一致をナビゲートする
JavaScript で日付を操作する場合、月のインデックス付け方法の特殊性を理解することが重要です。 Mozilla Firefox Firebug に対する最近のクエリで懸念が生じました:
var myDate = new Date(2012, 9, 23, 0, 0, 0, 0); console.log(myDate);
出力:
Date {Tue Oct 23 2012 00:00:00 GMT-0400 (Eastern Daylight Time)}
矛盾を詳しく調べたところ、ユーザーは予期しない結果を観察しました: JavaScript は 10 月の代わりに 10 月の日付を返しました。
真実を明らかにする: ゼロベースのインデックス作成
鍵は、JavaScript の Date コンストラクターで数か月間使用されるゼロベースのインデックス付けにあります。このインデックス付けスキームでは、月は 1 月を表す 0 から始まり、11 は 12 月を表します。したがって、コンストラクター (9) で渡される月インデックスは、実際には 9 月ではなく 10 月に対応します。
参照による明確化:
Mozilla Developer Network (MDN) は明示的なガイダンスを提供します:
month: Integer value representing the month, beginning with 0 for January to 11 for December.
さらに、ECMAScript 言語仕様は技術的な洞察を提供します。
7. Let mn be ?(ℝ(m) modulo 12).
この行は、月の入力が 12 でモジュロ演算を受け、月のインデックスが 0 の範囲内で効果的にラップされることを示しています。
したがって、JavaScript で日付を作成するときは、混乱や予期せぬ結果を避けるために、月のインデックスがゼロであることを覚えておくことが重要です。
以上が月に 9 を指定すると、JavaScript の Date コンストラクターが 10 月を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。