我有 2 个日期:开始日期和结束日期。结束日期始终比开始日期少一天。因此,如果我的开始日是 19 日,那么结束日期将是下个月 18 日。
我正在尝试创建两个日期之间的天数数组。 (每月19日到18日,然后是18日到18日计算差额)
2018年8月19日 - 2018年9月18日 = 30 天
2018年9月18日 - 2019年10月18日 = 30 天
2018年10月18日 - 2018年11月18日 = 31 天
数组 = [30,30,31]
我使用以下代码来计算日期之间的天数差异。
function daysBetweenArrears (date1, date2){
date1.setDate(date1.getDate() );
date2.setDate(date2.getDate() - 1);
var Diff = Math.abs(date2.getTime() - date1.getTime());
var TimeDifference = Math.round(Diff / (1000 * 3600 * 24));
return TimeDifference;
}
以下代码用于创建数组
if (document.getElementById("endDate"))
y = document.getElementById("endDate").value;
if (document.getElementById("startDate"))
z = document.getElementById("startDate").value;
var dateArr = getDateArray(z, y);
var dayCountArr = "";
var b = [];
for (var x = 0; x < dateArr.length-1; x++)
{
dayCountArr += daysBetweenArrears(dateArr[x], dateArr[x+1], ",");
b.push(daysBetweenArrears(dateArr[x], dateArr[x+1]));
}
问题是,当我按如下方式设置日期时,它给出了不正确的输出。问题在于,每当到下个月时,它都会错误地设置日期。我不确定我在这里做错了什么。任何帮助是极大的赞赏。谢谢。
date2.setDate(date2.getDate() - 1);
最佳答案
您可以使用 moment 来完成此操作。希望这会有所帮助。
const start = "8/19/2018";
const end = "11/18/2018 ";
const dates = [];
const mstart = moment(new Date(start));
const mend = moment(new Date(end));
for (let i = 0; mstart < mend ; i++) {
const daysInMonth = mstart.daysInMonth() + (i === 0 ? -1 : 0);
dates.push(daysInMonth);
mstart.add(1, 'M');
}
console.log(dates);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
关于javascript - 创建 2 个日期之间的日期数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52863540/