JS Date()需要错误的数据来返回正确的结果

JS Date() required incorrect data to return correct result

本文关键字:数据 返回 结果 错误 Date JS      更新时间:2023-09-26

我正在创建一个必须"永远"过期的cookie,虽然我不确定这是否可能,所以作为妥协,我决定将"expires:"日期设置为2099/12/31 23:59:59。然而,为了得到这个日期,我需要这样设置:

var killdate = new Date(2099, 11, 31, 23, 59, 59);

现在,除非我错过了什么,否则没有11月31日,所以我为什么要这样设置日期呢?

这更多的是一个好奇的事情,而不是我的代码的主要问题(尽管,我想确保我没有搞砸任何东西),但是我的在线研究并没有成功地为我清理它。

谢谢

From MDN docs:


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

月份是从0-11,而不是1-12。您设置的日期实际上是2099年12月31日。

这些天数是任意月份中较长的天数,而不是特定的天数。

Max hours = 23
Max minutes = 59
Max seconds = 59
Max days = 31
Max months = 12
Max years = varies/changes

他们从不相互依赖。我认为如果你使用UNIX时间戳,它们会说明每个月的天数

请注意,某些浏览器在日期超过2038时存在问题(当unix epoch time超过32-bit int时)

var killdate = new Date(2099, 11, 31, 23, 59, 59);

现在,除非我错过了什么,否则没有11月31日,所以为什么我必须将日期设置为?

这只是将来使用的日期,距离现在足够远。在您的示例中,日期实际上是31-Dec-2099 23:59:59(月计数从0到11)

只是为了知识作为你的好奇心:

JS Date对象是从Java 1.0移植过来的,这就是为什么。继承了它所有的缺点。

除了日期以外的所有内容都以0为基础,请参阅此处查看包含

范围的完整列表