ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の「Date」コンストラクターがゼロから始まる月を使用するのはなぜですか?
JavaScript Date コンストラクター: ゼロから始まる月引数の公開
JavaScript Date オブジェクトを作成するときに、月引数がは 1 ではなく 0 から始まります。特に月の日の引数が 1 に基づいているため、この特殊性により混乱が生じる可能性があります。これはなぜですか矛盾は存在しますが、その背後に論理的な理由はありますか?
答えは、JavaScript の Date コンストラクターの歴史的な進化にあります。 JavaScript の作成者である Brendan Aich 氏が Twitter で説明したように、JavaScript の Date は Java の java.util.Date からインスピレーションを受けており、Java の java.util.Date もゼロから始まる月システムを使用していました。
元々、JavaScript は Java の API をエミュレートして、言語間の互換性を促進します。残念ながら、これはゼロから始まる月の引数などの癖を継承することを意味しました。 Netscape の Ken Smith は、JavaScript の実装のために Java コードを C に移植するのを手伝ってくれました。
最初の設計選択にもかかわらず、開発者はこのゼロベースのシステムの不便さを長い間認識していました。 Java 1.1 で導入された java.util.Calendar クラスは、より優れた日付/時刻 API を提供しましたが、依然としてゼロから始まる月の規則を維持していました。
JavaScript には、堅牢な組み込みの日付/時刻 API が欠けていました。開発者は、Luxon、Moment.js、date-fns などのサードパーティ ライブラリに依存することになります。これらのライブラリは、Date オブジェクトの制限に対処し、より直観的な日付処理を提供します。
TC39 Temporal 提案は、最新の日付/時刻 API を JavaScript に導入することで、この欠陥に対処することを目的としています。この提案が実装されれば、JavaScript の日付処理が現在のベスト プラクティスに合わせて最新のものになり、より一貫性のあるユーザー フレンドリーなアプローチが提供されます。
以上がJavaScript の「Date」コンストラクターがゼロから始まる月を使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。