javascript - 创建日期数组
问题描述
我有 2 个日期:开始和结束。我需要每 3 个月创建一个日期数组,其中包含这两个日期之间的天数。
开始 = 8/19/2018 结束 = 11/19/2018
数组 = [92,92,89,92,92]
这是我尝试过的:
const start = "8/19/2018";
const end = "11/19/2018 ";
const dates = [];
const mstart = moment(new Date(start));
const mend = moment(new Date(end));
for (let i = 0; mstart < mend ; i++) {
var Q = mstart.add(3, 'months').format( 'YYYY-MM-DD');
const daysInMonth = startLease.diff(Q, 'days');
dates.push(daysInMonth);
}
但是,它将数组返回为 0。
任何帮助表示赞赏。谢谢你。
解决方案
首先,我从您的屏幕截图中假设您的意思是 2019 年 11 月 19 日,而不是 2018 年。我还假设您的代码startLease
中的意思是mstart
?
有了这些假设,我相信你缺少的是时刻操作函数会改变原始时刻,所以说var Q = mstart.add(3, 'months')
也会增加 3 个月mstart
,所以当你比较它们时,你不会得到预期值,因为它们都是相同的日期. 相反,您将需要克隆 mstart,如下所示:
const start = "8/19/2018";
const end = "11/19/2019 ";
const dates = [];
const mstart = moment(start, "MM/DD/YYYY");
const mend = moment(end, "MM/DD/YYYY");
while (mstart < mend) {
let Q = mstart.clone();
mstart.add(3, 'months');
const daysInMonth = mstart.diff(Q, 'days');
dates.push(daysInMonth);
}
console.log(dates);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
推荐阅读
- c - 将浮点数转换为 uint8 缓冲区
- docker - 为什么要构建多容器 docker 应用程序?
- python - Web Scraping Fbref 表
- google-visualization - 如何将 api 计数和日期值提供给谷歌折线图?
- php - MySQL SELECT 然后立即 UPDATE 并仅返回选择
- c# - 已发布版本 WPF .NET Core
- python - 使用可选参数过滤 Numpy 数组
- css - 想要增加 ngSelect 选项的高度
- asp.net - 无法在 dockerimage(和 Azure Pipelines)中安装 IIS AspNetCoreModuleV2
- css - 移动一个反应与 useRef