Javascript:Date 对象的字符串表示比实际值"later"一个月?



这是我在Chrome控制台中看到的:

> new Date(2012, 9, 13).toString()
"Sat Oct 13 2012 00:00:00 GMT+0800 (CST)"
> new Date(2012, 9, 13).getMonth()
9

显然它应该是Thu Sep.我错过了什么??

month的形式是0~11零索引

表示月份的整数值,从 0 开始表示 1 月 到 11 月为12月。

不要问我为什么,但 Date 构造函数被指定为 Jan = 0,...十二月 = 11。 您实际上是在创建一个十月日期,并且它打印正确。

请参阅 https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

来自 Date的 MDN 文档:

month

表示月份的整数值,以 0 开头表示 1 月至 11 月 11 日为 12 月。

Date 对象的 ECMAScript 规范指出月份是 0 索引的(很像在 Java 中),所以9表示十月:

15.9.1.4 月数

月份值 0 指定 1 月;1 指定 2 月;2 指定 3 月;3 指定 4 月;4 指定 5 月;5 指定 6 月;6 指定 7 月;7 指定 8 月;8 指定 9 月

;9 指定 10 月;11 指定 12 月。请注意,MonthFromTime(0) = 0,对应于 1970 年 1 月 1 日星期四。

最新更新