gpt4 book ai didi

Javascript 日期 : next month

转载 作者:IT王子 更新时间:2023-10-29 03:14:04 27 4
gpt4 key购买 nike

我一直在为一个项目使用 Javascript 的 Date,但今天我注意到我以前工作的代码不再正常工作。下面的代码没有按预期生成二月,而是生成三月。

我的代码看起来像这样:

current = new Date();
current.setMonth(current.getMonth()+1); //If today is Jan, expect it to be Feb now

这段代码每天都有效,直到今天。这是一个 Javascript 错误还是我以错误的方式解决这个问题?

最佳答案

您可能会发现您将日期设置为 2009 年 2 月 31 日(如果今天是 1 月 31 日)并且 Javascript 会自动将其滚动到 3 月初。

检查一个月中的第几天,我希望它是 1、2 或 3。如果它与添加一个月之前不同,请回滚一天,直到月份再次更改。

这样一来,“一月的最后一天”就变成了“二月的最后一天”。

编辑:

Ronald,根据您对其他答案的评论,您可能希望避免极端情况行为,例如“当我尝试制作 2 月 30 日时会发生什么”或“当我尝试制作 2009/13 时会发生什么/07 (yyyy/mm/dd)”(即使对于我的解决方案,最后一个可能仍然是一个问题,所以你应该测试它)。

相反,我会明确地为可能性编码。由于您不关心每月的第几天(您只希望下个月的年份和月份正确),这样的事情就足够了:

var now = new Date();
if (now.getMonth() == 11) {
var current = new Date(now.getFullYear() + 1, 0, 1);
} else {
var current = new Date(now.getFullYear(), now.getMonth() + 1, 1);
}

对于 12 月的任何一天,这将为您提供下一年的 1 月 1 日,对于任何其他日期,则为下个月的第一天。更多代码,我知道,但我早就厌倦了为了提高效率而采用的编码技巧,我更喜欢可读性,除非有明确的要求。

关于Javascript 日期 : next month,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/499838/

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