首頁  >  文章  >  web前端  >  當我提供月份 9 時,為什麼 JavaScript 的日期建構子會回傳 10 月?

當我提供月份 9 時,為什麼 JavaScript 的日期建構子會回傳 10 月?

Patricia Arquette
Patricia Arquette原創
2024-10-30 17:22:03813瀏覽

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 月份的日期,而不是九月,如期。

揭開真相:從零開始的索引

關鍵在於 JavaScript 的 Date 建構子使用了幾個月的從零開始的索引。在此索引方案中,月份從 0 開始表示 1 月,11 表示 12 月。因此,在構造函數中傳遞的月份索引 (9) 實際上對應於 10 月,而不是 9 月。

透過參考進行澄清:

Mozilla 開發者網路(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 的範圍內到11.

因此,在JavaScript 中構造日期時,必須記住月份是零索引的,以避免任何混淆或意外結果。

以上是當我提供月份 9 時,為什麼 JavaScript 的日期建構子會回傳 10 月?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn