gpt4 book ai didi

javascript - 2013 年 6 月 6 日的 Chrome JavaScript 日期错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:25:39 25 4
gpt4 key购买 nike

我正在使用 javascript Date 对象将字段值转换为时间戳,同一段代码多年来一直有效,但今天我有一个奇怪的行为,标题中有日期。

可以用下面一段代码来概括:

// 06 June 2013
DateTemp = new Date();
DateTemp.setFullYear( 2013 );
DateTemp.setMonth( 5 );
DateTemp.setDate( 6 );
DateTemp.setHours( 0 );
DateTemp.setMinutes( 0 );
DateTemp.setSeconds( 0 );
console.log( DateTemp.getMonth() ); // 5

DateTemp.setMonth( 6 );
console.log( DateTemp.getMonth() ); // 6

DateTemp.setMonth( 7 );
console.log( DateTemp.getMonth() ); // 7

我希望它返回: 5个 6个 7

但它输出: 6个 6个 7

因此,如果用户在该字段中输入此日期,它会在一个月后存储该日期...如果有人可以向我解释我完全搞砸了的地方,请提前致谢。

祝你有个愉快的一天

最佳答案

换行,将日期设置为月份:

DateTemp = new Date();
DateTemp.setFullYear( 2013 );
DateTemp.setDate( 6 );
DateTemp.setMonth( 5 );
DateTemp.setHours( 0 );
DateTemp.setMinutes( 0 );
DateTemp.setSeconds( 0 );
console.log( DateTemp.getMonth() ); // 5

DateTemp.setMonth( 6 );
console.log( DateTemp.getMonth() ); // 6

DateTemp.setMonth( 7 );
console.log( DateTemp.getMonth() ); // 7

发生了什么?

如果您使用构造函数 new Date(),则会创建一个具有当前 日期的新 Date 对象。所以今天这将是这样的:

Date {Fri May 31 2013 14:20:32 GMT+0200}

在您的代码中,您首先将月份更改为六月。但是没有 6 月 31 日,JavaScript 以这种方式处理它,将其转换为

Date {Mon Jul 01 2013 14:21:28 GMT+0200}

然后设置日期和所有其他部分,一切正常。但是最后你好像提前了一个月。

所以最后的解决方案就是改变设置值的顺序,这样“溢出”就不会发生,或者使用 constructor直接使用相应的参数:

new Date( 2013, 5, 6 );

关于javascript - 2013 年 6 月 6 日的 Chrome JavaScript 日期错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16856984/

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