ホームページ  >  記事  >  ウェブフロントエンド  >  月に 9 を指定すると、JavaScript の Date コンストラクターが 10 月を返すのはなぜですか?

月に 9 を指定すると、JavaScript の Date コンストラクターが 10 月を返すのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-30 17:22:03812ブラウズ

Why Does JavaScript's Date Constructor Return October When I Provide 9 for the Month?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。