如何解决建议下一个可用日期最近,但不建议数组中的日期
我有一个数组 exdate 的列表,其中有一些日期。我想排除这些日期,并建议从今天开始的下一个可用日期。日期不能是随机的。
const exdate = ["24/08/2020","8/8/2020"] //dates needs to be excluded [DD/MM/YYYY]
新生成的日期将是“ 25/08/2020”,它是最接近的日期,不在数组中。
这个post的问题是使用 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
。可以随时找到所需的功能here。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。