建议下一个可用日期(最接近),但不建议数组中的日期



我有一个数组列表exdate,它有一些日期。我想排除这些日期,并建议从今天开始的下一个可用日期。日期不应是随机的。

const exdate = ["24/08/2020", "8/8/2020"] //dates needs to be excluded [DD/MM/YYYY]

新生成的日期将是";25/08/2020";这是最接近的一个并且不在阵列中。

这篇文章有一个问题是使用math.random函数生成随机日期,但我的情况不同。

在while循环中迭代,并检查exdate是否包含当前日期。如果不包含日期,请在当前日期的基础上增加1天,然后再次检查。如果exdate数组中不存在当前日期,请退出while循环并打印值。

你可能会考虑一件事:你约会的预期格式是什么?你应该确保它保持一致。例如,不要在月份前面使用前导0。我的回答应该会给你指明正确的方向。

exdate = ['24/8/2020', '8/8/2020'];

let currDate = new Date();
let dd = currDate.getDate();
let mm = currDate.getMonth() + 1;
let y = currDate.getFullYear();
let dateFormat = dd + '/' + mm + '/' + y;
while (true) {
dd = currDate.getDate();
mm = currDate.getMonth() + 1;
y = currDate.getFullYear();
dateFormat = dd + '/' + mm + '/' + y;
if (!exdate.includes(dateFormat)) break;
currDate.setDate(currDate.getDate() + 1);
}
console.log(dateFormat);

我认为这段代码做了你想要做的事情,非常简单:

import moment from "moment";
// Constants
const dateFormat = 'DD/MM/YYYY'
// Utils
const strToDate = (date) => moment(date, dateFormat)
const dateToStr = (date) => date.format(dateFormat)
const sortByMoment = (a, b) => b.diff(a)
const incrementDate = (date) => date.add(1, 'day')
const isToday = (date) => moment().isSame(date, 'day')
// Data
const exdate = ["17/08/2020", "24/08/2020", "8/8/2020"];
// Implementation
const sortNewestToOldest = (data) => data
.map(strToDate)
.sort(sortByMoment)

const nextAvailableDate = ([head]) => isToday(head) ? [dateToStr(incrementDate(head))] : [dateToStr(moment())]

nextAvailableDate检查今天的日期是否在exdate列表中,如果是,则返回明天,否则返回今天。如果你还需要适应未来的日期,你可以将isToday扩展为isTodayOrInTheFuture。您需要的即时函数都可以在这里找到。

最新更新