gpt4 book ai didi

javascript - 用数字创建日期 (new Date(2012, 03, ...) 给出错误的月份 (+1)

转载 作者:可可西里 更新时间:2023-11-01 02:35:54 24 4
gpt4 key购买 nike

当使用数字作为部分创建新日期 对象时,我得到的值正好比我为“月”输入的值早一个月

new Date(2012, 05, 17, 00, 00, 00)
Sun Jun 17 2012 00:00:00 GMT+0800 (HKT) // june?!

但是,完全相同的字符串的正常解析会返回正确的时间:

new Date("2012-05-17 00:00:00")
Thu May 17 2012 00:00:00 GMT+0800 (HKT)

我在 ie/ff/chrome 中得到了相同的结果。删除小时/分钟/秒没有任何效果。我可以通过在设置月份之前减去一个来解决这个问题,但我只是转而将我的日期写成字符串。

编辑:字符串解析在 IE 中不起作用。我不知道我做了什么,但我发誓我做到了。那是概率。为什么我首先避免它。我现在已经改用 moment.js。

啊,我明白了。就像常规的 java 日期一样,我很少编写代码,即使那样也总是使用库(joda 等)。无论如何,这是一个多么糟糕的主意。这是双向飞碟对这个问题的回答:Why is January month 0 in Java Calendar?

为什么会这样?

最佳答案

程序员从0开始计数。所以月份用0(Jan)-11(Dec)表示。

天数不遵循此规则的原因是为了不让作者混淆 30/31 个月的差异。

From MDN:

month

Integer value representing the month, beginning with 0 for January to11 for December.

关于javascript - 用数字创建日期 (new Date(2012, 03, ...) 给出错误的月份 (+1),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10649036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com