gpt4 book ai didi

javascript - 在 Javascript 中获取两 (2) 个日期之间 *每年* 的月数 [Ex : Aug 2019 - Aug 2022]

转载 作者:行者123 更新时间:2023-11-29 15:08:29 24 4
gpt4 key购买 nike

这可能与 Difference in Months between two dates in JavaScript 重复但如果输入有多年,我需要计算每年的月数。

例如:

Start Date: 2019-05-08

End Date: 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 [August - December] = 4 Months

2020 [January - December] = 12 Months

2021 [January - December] = 12 Months

2022 [January - August] = 7 Months

最佳答案

注意:调整您的月份数字歧义。代码本身描述了所有内容。

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 - 在 Javascript 中获取两 (2) 个日期之间 *每年* 的月数 [Ex : Aug 2019 - Aug 2022],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57352124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com