首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
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

回答 9

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

Stack Overflow用户

发布于 2009-02-01 00:10:09

相反,请尝试:

代码语言:javascript
复制
var now = new Date();
current = new Date(now.getFullYear(), now.getMonth()+1, 1);
票数 45
EN

Stack Overflow用户

发布于 2014-11-20 02:34:34

我正在寻找一个简单的单行解决方案,以便通过数学获得下个月,这样我就不必查找javascript的日期函数(对我来说是精神上的懒惰)。奇怪的是,我在这里找不到。

我克服了我短暂的懒惰,写了一篇,并决定分享!

解决方案:

代码语言:javascript
复制
(new Date().getMonth()+1)%12 + 1

只是为了弄清楚为什么这样做,让我来解释一下它的魔力!

它获取当前月份(格式为0..11 ),为下一个月增加1,并通过模数(11%12==11;12%12==0)将其包装为12的边界。这将以相同的0..11格式返回下个月,因此转换为Date()格式将很容易识别(1..12):只需再次添加1即可。

概念验证:

代码语言:javascript
复制
> for(var m=0;m<=11;m++) { console.info( "next month for %i: %i", m+1, (m+1)%12 + 1 ) }
next month for 1: 2
next month for 2: 3
next month for 3: 4
next month for 4: 5
next month for 5: 6
next month for 6: 7
next month for 7: 8
next month for 8: 9
next month for 9: 10
next month for 10: 11
next month for 11: 12
next month for 12: 1

现在你就知道了。

票数 30
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/499838

复制
相关文章

相似问题

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