gpt4 book ai didi

javascript - 混淆了在 moment js 中循环日期

转载 作者:行者123 更新时间:2023-11-30 14:21:05 25 4
gpt4 key购买 nike

我正在编写一小段 javascript 来帮助我获取 2 个日期(包括今天)之间的值。

这是我的代码。

var beforeSevenDays = moment(Date.now() - 7 * 24 * 3600 * 1000).format('YYYY-MM-DD');
var i = 0;
for (var m = moment(beforeSevenDays); m.diff(moment(Date.now()).local('in'), 'days') <= 0; m.add(1, 'days')) {
console.log("i: " + i + " " + m.format('YYYY-MM-DD'));
i += 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

当我运行这段代码时,我得到的输出是

i: 0 2018-10-03
i: 1 2018-10-04
i: 2 2018-10-05
i: 3 2018-10-06
i: 4 2018-10-07
i: 5 2018-10-08
i: 6 2018-10-09
i: 7 2018-10-10
i: 8 2018-10-11

但我期待的输出是

i: 0 2018-10-03
i: 1 2018-10-04
i: 2 2018-10-05
i: 3 2018-10-06
i: 4 2018-10-07
i: 5 2018-10-08
i: 6 2018-10-09
i: 7 2018-10-10

此处当我将查询修改为 m.diff(moment(Date.now()).local('in'), 'days') < 0我得到的输出为

i: 0 2018-10-03
i: 1 2018-10-04
i: 2 2018-10-05
i: 3 2018-10-06
i: 4 2018-10-07
i: 5 2018-10-08
i: 6 2018-10-09

请让我知道哪里出错了,我该如何解决。

最佳答案

这里的问题是 moment diff 函数按天返回今天和明天日期的 0。所以当条件小于或等于0时,它在for循环中显示的原因。

var moment =require('moment');

var beforeSevenDays = moment().subtract(7, 'days').format('YYYY-MM-DD');
var i = 0;

for (var m = moment(beforeSevenDays); m.diff(moment(Date.now()), 'days') <0 || m.isSame(moment(), 'day'); m.add(1, 'days')) {
console.log("i: " + i + " " + m.format('YYYY-MM-DD'));
i += 1;
}

您可以添加另一个条件,您可以在其中检查同一天。

关于javascript - 混淆了在 moment js 中循环日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52737339/

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