首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript日期:下个月

Javascript日期:下个月
EN

Stack Overflow用户
提问于 2009-02-01 00:03:25
回答 9查看 132K关注 0票数 55

我一直在一个项目中使用Javascript的日期,但今天注意到我以前工作的代码不再正常工作。下面的代码不是像预期的那样生成Feb,而是生成3月。

我的代码看起来像这样:

代码语言:javascript
复制
current = new Date();
current.setMonth(current.getMonth()+1); //If today is Jan, expect it to be Feb now

这段代码每天都在工作,直到今天。这是一个Javascript错误,还是我做错了?

EN

Stack Overflow用户

回答已采纳

发布于 2009-02-01 00:07:48

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

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

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

编辑:

Ronald,根据您对其他答案的评论,您可能希望避免边缘情况行为,例如“当我尝试创建Feb 30时会发生什么”或“当我尝试创建2009/13/07 (yyyy/mm/dd)时会发生什么”(即使对于我的解决方案,最后一个问题也可能是一个问题,所以您应该对其进行测试)。

相反,我会显式地为这些可能性编写代码。由于您并不关心月份中的哪一天(您只希望下个月的年份和月份是正确的),下面这样的内容就足够了:

代码语言:javascript
复制
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日和其他任何一天的次月1号。更多的代码,我知道,但我早就厌倦了为提高效率而编写代码的技巧,除非有明确的要求,否则我更喜欢可读性。

票数 65
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/499838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档