首页 > 解决方案 > 如何创建表示 0001 年 1 月 1 日的 JavaScript 日期?

问题描述

注意:这不是重复的。我已经提到提到的另一个问题。我指出那里给出的建议是行不通的。

我正在尝试创建一个表示 0001 年 1 月 1 日(即公元 1 年开始)的 JavaScript 日期。

一开始我天真地以为这样就可以了:

const date = new Date(1, 0, 1);

...但这不起作用。这实际上产生了 1901 年 1 月 1 日。

此问题(已记录在此问题中进行了讨论。

建议的解决方案是构造日期,然后用于setUTCFullYear设置所需的实际年份,如下所示:

const date = new Date(1, 0, 1);
date.setUTCFullYear(1);

好吧,我试过这样做,我最终得到的日期是:

Sun Dec 31 0000 23:58:45 GMT-0001(格林威治标准时间)

有关“演示”,请参阅此 StackBlitz

我完全不理解这种行为。额外的 1 分 15 秒去哪儿了?

而且......我怎样才能真正得到我需要的日期,而不是诉诸于Date.parse()

标签: javascript

解决方案


我会发布一个答案,因为每个人都喜欢评论:-)

事实证明,我创建的日期是“正确的”,但它以(erm ...)“令人惊讶”的方式显示。

所以:

const date = new Date(Date.UTC(1, 0, 1));
console.log(date);

1901-01-01T00:00:00.000Z

date.setUTCFullYear(1);
console.log(date);

0001-01-01T00:00:00.000Z

这就是我想要的,但我看到的是:

console.log(date.toString());

Sun Dec 31 0000 23:58:45 GMT-0001(格林威治标准时间)

(我仍然认为结果很奇怪)。我本来会更好:

console.log(date.toUTCString());

格林威治标准时间 0001 年 1 月 1 日星期一 00:00:00

谢谢大家!


推荐阅读