gpt4 book ai didi

Javascript 和 setMonth 行为异常

转载 作者:行者123 更新时间:2023-12-02 21:56:32 25 4
gpt4 key购买 nike

我正在执行 datObj.setMonth(1),但月份设置为三月? 1不是应该是二月吗?我使用的是 Chrome 79。

这是用于解析日期的部分代码,例如 YYYY-MM-DD HH:MM:SS(因为 safari 本身无法执行此操作)

var date = "2020-02-02 23:59:00"

if (typeof date == 'string')
{
var dateParts = date.split(/[:-\s]+/);

if (dateParts.length == 6)
{
dateObj = new Date();

dateObj.setYear(dateParts[0]);
var m = dateParts[1] - 1;
console.log('m= ' + m);
dateObj.setMonth(m);
console.log('after setmonth, date= ' + dateObj);
dateObj.setDate(dateParts[2]);
dateObj.setHours(dateParts[3]);
dateObj.setMinutes(dateParts[4]);
dateObj.setSeconds(dateParts[5]);
}
}

console.log(dateObj);
alert(dateObj);

最佳答案

正如您所想,您的问题是您在日期仍然是 30 时设置了月份。虽然您可以通过使用 setFullYear 来解决这个问题,并一次传递年、月和日,您确实应该首先使用正确的值构造整个 Date 对象:

dateObj = new Date(dateParts[0], dateParts[1]-1, dateParts[2], dateParts[3], dateParts[4], dateParts[5]);

或者更确切地说使用 UTC 作为时区:

dateObj = new Date(Date.UTC(dateParts[0], dateParts[1]-1, dateParts[2], dateParts[3], dateParts[4], dateParts[5]));

关于Javascript 和 setMonth 行为异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59994099/

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