【发布时间】:2019-08-05 04:13:31
【问题描述】:
这可能与 Difference in Months between two dates in JavaScript 重复,但如果输入有多年,我需要计算 PER YEAR 的月数。
例如:
开始日期:2019-05-08
结束日期:2022-05-08
所以这将是 3 年,但总共有 4 个产出。我需要得到每年的月数。
startDate = "2019-08-05" // YYY-MM-DD
payOffDate = "2022-08-05"
function monthDiff(date1, date2){
months = (date2.getFullYear() - date1.getFullYear()) * 12;
months -= date1.getMonth() + 1;
months += date2.getMonth();
return months <= 0 ? 0 : months;
}
monthDiff(
new Date(startDate),
new Date(payOffDate)
); // 35 Months
在这种情况下,它会通过给定的两个输入(startDate、payOffDate)输出 35 个月,但我希望每年单独输出它们,只有这两个日期范围(不是手动输入 2019 年 8 月 - 2019 年 12 月,2022 年 1 月 - 2022 年 8 月等)
2019 [8 月 - 12 月] = 4 个月
2020 [1 月 - 12 月] = 12 个月
2021 [1 月 - 12 月] = 12 个月
2022 [1 月 - 8 月] = 7 个月
【问题讨论】:
-
请同时添加您的代码。展示您到目前为止所尝试的内容。
-
您在旅游问题中发布的链接中的答案解决了您的问题...
-
请查看更新后的帖子@RinkeshGolwala,谢谢 :)
-
为什么 8 月到 12 月是 4 个月,而 1 月到 12 月是 12 个月? Jan-Aug 只有 7 岁?这没有意义。
-
new Date(startDate)中的字符串“2019-05-08”将被视为 UTC,因此 get 方法应该是 getUTC 方法。除了异常的 Jan-Dec 是 12 而不是 11 之外,它们似乎可以简单地是getUTCMonth(date2) - getUTCMonth(date1)。
标签: javascript date count monthcalendar