获取 Javascript 中两 (2) 个日期之间*每年*的月数 [例如:2019 年 8 月 - 2022 年 8 月]
Posted
技术标签:
【中文标题】获取 Javascript 中两 (2) 个日期之间*每年*的月数 [例如:2019 年 8 月 - 2022 年 8 月]【英文标题】:Get the Number of Months *Per Year* between Two (2) Dates in Javascript [Ex: Aug 2019 - Aug 2022] 【发布时间】: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)
。
【参考方案1】:
注意:调整您的月份数字模糊度。代码本身描述了一切。
const monthNames = ["January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
d1 = new Date("2019-08-05") // YYY-MM-DD
d2 = new Date("2022-08-05")
//Start and End Years
var start_y = d1.getFullYear();
var end_y = d2.getFullYear();
//Start and End months
var start_m = d1.getMonth();
var end_m = d2.getMonth();
var m1,m2;
//Loop all years
for( var i = start_y; i<= end_y; i++)
m2 = (i == end_y) ? end_m : 11;
m1 = (i == start_y) ? start_m : 0;
let t1 = new Date(i,m1,1), t2 = new Date(i,m2,1);
var diff = monthDiff( t1, t2);
console.log(`$i[$monthNames[m1] - $monthNames[m2]] = $diff`);
function monthDiff(date1, date2)
return date2.getMonth()+1 - date1.getMonth();
【讨论】:
以上是关于获取 Javascript 中两 (2) 个日期之间*每年*的月数 [例如:2019 年 8 月 - 2022 年 8 月]的主要内容,如果未能解决你的问题,请参考以下文章
如何计算Python Pandas中两列之间的日期差异[重复]
获取 JavaScript 中两个日期之间的差异? [复制]
javascript获取当天日期,计算出该天所属周,列出本周从周一至周日的所有日期,求大神帮助!