gpt4 book ai didi

javascript - Javascript中两个日期初始化的差异

转载 作者:数据小太阳 更新时间:2023-10-29 05:48:30 26 4
gpt4 key购买 nike

为什么这两个日期不同:

var date1 = new Date();
date1.setFullYear(2012); // year (four digits)
date1.setMonth(10); // month (from 0-11)
date1.setDate(1); // day of the month (from 1-31)

var date2 = new Date(2012, 10, 1, 0, 0, 0, 0);

结果:

Date 1 : Sat Dec 01 2012 14:56:16 GMT+0100
Date 2 : Thu Nov 01 2012 00:00:00 GMT+0100

鉴于这两个日期相等:

var date3 = new Date();
date3.setFullYear(2012); // year (four digits)
date3.setMonth(9); // month (from 0-11)
date3.setDate(1); // day of the month (from 1-31)

var date4 = new Date(2012, 9, 1, 0, 0, 0, 0);

结果:

Date 3 : Mon Oct 01 2012 14:56:16 GMT+0200
Date 4 : Mon Oct 01 2012 00:00:00 GMT+0200

另一个问题是为什么 date1.setMonth(10) 给出的日期是十二月(应该是十一月)。

最佳答案

终于明白了。 new Date() 将日期设置为当前日期和时间。换句话说,10 月 31 日(在撰写本文时)。

然后当您尝试将月份设置为 11 月时,它会做什么? 11 月只有 30 天...所以它可以结束到 12 月。

如果您更改顺序,以便在月份之前设置月份日期,它会起作用:

var date1 = new Date();
date1.setFullYear(2012); // year (four digits)
date1.setDate(1); // day of the month (from 1-31)
date1.setMonth(10); // month (from 0-11)

或者如 jbabey 的回答所暗示的那样:

var date1 = new Date();
date1.setFullYear(2012); // year (four digits)
date1.setMonth(10, 1); // month (from 0-11) and day (1-31)

The documentation不是非常清楚,但至少具有启发性:

If a parameter you specify is outside of the expected range, setMonth attempts to update the date information in the Date object accordingly. For example, if you use 15 for monthValue, the year will be incremented by 1 (year + 1), and 3 will be used for month.

(“相应地”远非精确,但这意味着实现至少可以说是正确的...)

关于javascript - Javascript中两个日期初始化的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13159789/

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