首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS专用结束日期计算器

JS专用结束日期计算器
EN

Stack Overflow用户
提问于 2017-07-24 10:08:37
回答 1查看 63关注 0票数 0

如果我的开始日期是1月31日,加上1个月,它将返回3月2日。我正在努力制作一个脚本,它将以这种方式增加几个月的时间:

代码语言:javascript
复制
starting date : 31/01/2000
+1 month = 29/02/2000
+2 months = 31/03/2000
+3 months = 30/04/2000 
....
+12 months = 28/02/2001

另一个案件:

代码语言:javascript
复制
Starting date : 28/02/2001
+1 month : 31/03/2001
+2 months : 30/04/2001
...

因此,如果开始日期是当前月份的最后一天,则结束日期必须是月份的最后一天。

因此,我的代码逻辑如下: var date =新日期(207,01,30);1.获取该日期的当前日期。(x) 2.如果这个月中x<天,则在相同的情况下加上1个月至日期2.1,如果修改日期< x,则将日期设置为前一个月的最后一天。

我的JSFiddle在这里:https://jsfiddle.net/5mfLo8zs/告诉我语法上有什么问题,但是它给了我一个.getDate()不是函数错误,很可能,这不是唯一的问题。

我知道这个主题是重复的,我花了10分钟搜索身份问题,但我找到了如何设置上个月的最后一天,但这里我需要更多的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-24 10:38:18

你可以试试这样的东西:

逻辑:

  • 检查过的日期是否是这个月的最后一天?
    1. 如果是的话,你需要增加一个月到一个月。这是因为,获取月份最后一天的逻辑是通过创建一个日期作为下个月的第一天,然后减去1来实现的。

  • 现在初始化一个保存日值的temp变量。默认情况下将其设置为0。
  • 如果月份相同,则将此temp变量设置为已过日期的日期。否则就让它是0。
  • 现在,您有了创建新日期的所有参数。还回去。注意,更新同一日期变量将覆盖原始值。所以尽量避免对它的任何操纵。

代码语言:javascript
复制
function addMonths(date, months) {
  var d = 0;
  var next = new Date(date.getFullYear(), date.getMonth(), date.getDate() + 1);
  if (next.getMonth() === date.getMonth()) {
    d = date.getDate()
  }
  else{
    months++
  }

  // use following line in actual code.
  // return new Date(date.getFullYear(), date.getMonth() + months, d)
  // This line is just fror demonstration purpose.
  return new Date(date.getFullYear(), date.getMonth() + months, d).toDateString();
}

console.log(addMonths(new Date(2017, 0, 31), 1));
console.log(addMonths(new Date(2017, 0, 31), 3));
console.log(addMonths(new Date(2017, 0, 15), 3));
console.log(addMonths(new Date(2016, 11, 31), 1));
console.log(addMonths(new Date(2016, 11, 11), 1));

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

https://stackoverflow.com/questions/45277787

复制
相关文章

相似问题

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