JavaScript Date c`tor返回错误的时间

ita*_*312 5 javascript

我正在创建一个新的Date对象,如下所示:

new Date(1951, 3, 1, 0, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

1951年4月1日星期日,格林尼治标准时间+0300

如您所见,我希望小时数为“ 0”,而改为“ 1”。
我知道Date对象受时区影响,但是如果执行此操作:

a = new Date(1951, 3, 2, 0, 0, 0, 0)
Run Code Online (Sandbox Code Playgroud)

1951年4月2日星期一00:00:00 GMT + 0300

时区保持不变,但是现在日期中的小时部分似乎没问题。

我希望对此行为做出解释。

如您所见,我希望小时数为“ 0”,而改为“ 1”。我知道Date对象受到时区的困扰,但是如果我这样做的话:

在此处输入图片说明

时区保持不变,但是现在日期中的小时部分似乎没问题。

很想对此行为做出解释。

ita*_*312 0

好的,我找到了这种行为的原因 - 它是 Date 对象的 js 规范的一部分,您可以在此处阅读更多信息https://codeofmatt.com/javascript-date-type-is-horribly-broken/