javascript正在创建日期错误的月份

IT技术 javascript
2021-02-03 02:54:10

使用 Mozilla Firefox Firebug:

var myDate = new Date(2012, 9, 23, 0,0,0,0);
myDate;

日期 {2012 年 10 月 23 日星期二 00:00:00 GMT-0400(东部夏令时间)}

为什么 javascript 用错误的月份创建日期?

3个回答

不,javascript 的Date月份以 开头09第 10 个月也是 10 月

参考

new Date(year, month [, day, hour, minute, second, millisecond]);

[...]

month 表示月份的整数值,从 0 开始表示一月到 11 表示十二月。

只有真正的知识分子才能理解。很明显,我不是一个人,因为我对此有多么温和
2021-03-13 02:54:10
@DiegoT.Yamaguchi 发生在每个人身上,所以放松 ;-)
2021-03-14 02:54:10
我认为值得一提的是,月份不仅在 JavaScript 中而且几乎在所有地方都是从零开始的。这遵循了<time.h>来自 C的传统。 C 中用于索引数组的所有字段都是从零开始的,即使人类可读的形式是从一开始的。每当在其他地方创建类似的 API 时,它们中的大多数都遵循该约定,例如 Java 或 JavaScript。
2021-03-24 02:54:10
当天也是如此吗?我创建了一个 Date(1982, 10, 14)... 有时它给我 13 Oct 1982 23:00 有时它给我 14 Oct 1982 00:00
2021-03-25 02:54:10

在 javascript 世界中,月份从零开始!对我来说有点奇怪。无论如何,9 不是九月,而是 9 是十月。

这并不奇怪。在编程世界中,大多数语言都提供从 0 开始的整数月份。
2021-03-22 02:54:10
@MarkCarpenterJr 不,我认为从零开始的月份是一个虐待狂的决定。每个理智的人都认为 9-11 是 9 月 11 日,除了决定在代码中随意将其设为 8-11 的 jagoff。年已经是从零开始的,但天不是,所以同样的决定应该适用于天。
2021-03-22 02:54:10
你知道我会回答“但是几天和几年呢?为什么它们不是从零开始的?” 但后来我意识到;实际上,它们是 2 种完全不同的数据类型,月份是专有名称、字符串,月份中的天数和年份只是数字、整数。所以这并不奇怪,当你想到它时,它实际上有点道理。
2021-03-27 02:54:10

使用字符串作为参数来避免 Date 构造函数的奇怪行为。

例子:

const myDate = new Date('2021-08-13'); // Result: Fri Aug 13 2021 02:00:00 GMT+0200...