gpt4 book ai didi

javascript - 使用 Moment.js 只获取 future 的日子

转载 作者:行者123 更新时间:2023-12-02 23:03:57 24 4
gpt4 key购买 nike

您好,我正在尝试创建给定日期的 N 个日期元素(moment.js 对象)列表(例如 ['Friday', 'Tuesday', 'Monday '])。我想总是从今天开始并列出 future 的 N 个日期,但问题是如果可能的话它还包括过去的日期。问题是如何优雅地解决呢?我想我可以添加一些条件来修复它,但也许有正确的“moment.js”方式。

一个例子可以更好地描述它:

let initialPoint = moment();
const weekDays = ['Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday', 'Monday'];
let days = [];

for (let i = 0; i < 7; i++) {
days.push(moment(initialPoint).day(weekDays[i]));
}

days.forEach(day => console.log(day.format()));

以我为例,今天是 2019 年 8 月 27 日,但也包括 25 日和 26 日。

代码的结果:

2019-08-27T12:31:55+02:00
2019-08-28T12:31:55+02:00
2019-08-29T12:31:55+02:00
2019-08-30T12:31:55+02:00
2019-08-31T12:31:55+02:00
2019-08-25T12:31:55+02:00
2019-08-26T12:31:55+02:00

正在运行的代码在这里 https://jsfiddle.net/423zoeaw/4/

注释 1:不要关心日期的排序。

注释 2: 该示例没有多大意义,但它重现了我在实际应用程序中遇到的错误。

最佳答案

您可以使用add MomentJS 内置方法:

// set initial date
// e.g., for Wed 8/28, use moment("8/28/2019")
// for this example, we'll just use today as the starting date
let initialPoint = moment();

// how many days ahead you want to look
let numDays = 7;

// the days you want to include
let weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"];

// an array to hold the dates
let days = [];

// Add starting day to the days array
days.push(initialPoint.format());

for (let i = 1; i < numDays; i++) {
let d = initialPoint.clone().add(i, "days");
// check if the day is in the array
if (weekdays.includes(d.format("dddd"))) {
// Add each subsequent day to the days array
days.push(d);
}
}

console.log(days);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>

如果您只想要当天的名称,可以使用.format("dddd")

关于javascript - 使用 Moment.js 只获取 future 的日子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673131/

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