【问题标题】:calculate the number of months between two dates, iterate a function on each month [duplicate]计算两个日期之间的月数,每个月迭代一个函数[重复]
【发布时间】:2014-05-04 18:54:02
【问题描述】:

我需要编写一个函数,它需要两个日期(startDate、endDate)来计算它们之间的时间(以月或年为单位)(取决于输入)。当找到月数或年数时,我需要迭代一个循环,该循环在开始日期和结束日期之间的每个月或一年中运行一个非常简单的 ajax 调用(我正在向 Quickbase 添加一条记录)。

我对此采取了一些技巧,但是当我尝试计算月份时遇到了麻烦(由于日历日期(即 2 月有 28 天等)...我已经计算了之间的时间这两个日期以天为单位,但我需要几个月或几年。

任何帮助将不胜感激!

【问题讨论】:

  • 正如 OP 所询问的那样,“原始”帖子中的答案都没有照顾到 2 月 28 日等等。

标签: javascript


【解决方案1】:

只是开始尝试

function Noofmonths(date1, date2) {
    var Nomonths;
    Nomonths= (date2.getFullYear() - date1.getFullYear()) * 12;
    Nomonths-= date1.getMonth() + 1;
    Nomonths+= date2.getMonth() +1; // we should add + 1 to get correct month number
    return Nomonths <= 0 ? 0 : Nomonths;
}

【讨论】:

  • 这对获得几个月非常有效。另一个问题。如果开始日期和结束日期不在一个月的同一天怎么办? IE。开始日期 == 2004 年 10 月 26 日 && 结束日期 == 2006 年 10 月 16 日?还有几天,我不知道是什么逻辑发现了这一点。
【解决方案2】:

获取 date1 年和 date2 年。 得到差值并乘以 12。 获取 date1 月和 date2 月。 得到差异。 将差异加在一起。

【讨论】:

  • 你的答案就是我的答案的描述..!!
  • 为什么要投反对票。这不是数学上的解决方案吗? :(
  • 抱歉我发的太慢了。
  • 有人对你的答案投了反对票然后走了..!!
  • 我不在乎。继续前进。
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多