在 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中文網其他相關文章!