gpt4 book ai didi

javascript - 将月份日期设置为 31 日时出错

转载 作者:行者123 更新时间:2023-11-28 17:43:46 24 4
gpt4 key购买 nike

在将日期设置为 31 日时,我们遇到了此问题。

function getTodayMidnight() {
var date = new Date();
date.setHours(0);
date.setMinutes(0);
date.setSeconds(1);
date.setMilliseconds(0);
return date;
}

function getDates() {
var octStartDate = getTodayMidnight();
octStartDate.setDate(1);
octStartDate.setMonth(9);

var octEndDate = getTodayMidnight();
octEndDate.setDate(31);
octEndDate.setMonth(9);
console.log(octStartDate);
console.log(octEndDate);
}

getDates();

我正在考虑我的时区的日期偏移(+530, 330 分钟)。对于月初的情况,这种行为是预期的。 (我们希望返回到上个月并显示日期)。但在该月最后一个日期的情况下,我们得到了错误的输出。为什么他们指向相同的日期?

最佳答案

假设您今天(11 月 15 日)运行此程序,则 new Date() 返回一个 Date 对象,月份设置为 11 月。因此,调用 setDate(31) 将导致 date overflowing到12月1日(因为11月只有30天)。然后,您调用 setMonth(9),因此最终结果对应于 10 月 1 日。

显然,您可以通过切换方法调用的顺序来避免这种情况。 但为了完全避免这个排序问题,我建议使用 Date(year, Month, date, ...) 构造函数(这也避免了改变值类型,该类型通常被认为是好东西)。

关于javascript - 将月份日期设置为 31 日时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47303813/

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