我有一个标记为重复日期(每年发生)的日期,这个日期是 2014 年 4 月 1 日,从 2014 年开始,这个事件将每年发生。
我有一个每周运行的工作,在这个工作中,我在数据库中插入了从今天开始的 future 180 天内发生的事件,其他事件将被丢弃。
现在在我的支票中,2016 年 4 月 1 日已经过去......所以它被丢弃(而 2015 年 4 月 1 日应该被添加,因为它在范围内)。
我正在使用 momentjs,但找不到正确的逻辑。
下面是我的代码....
//desiredDate = today + 180 days
if (isYearlyRecur) {
var year = eventeDate.getFullYear();
if (year < currentYear) {
if (moment(eventeDate).unix() < moment(todayDate).unix()) {
eventeDate = moment(eventeDate).set('year', currentYear + 1);
}
else if (moment(eventeDate).unix() > moment(desiredDate).unix()) {
eventeDate = moment(eventeDate).set('year', currentYear);
}
}
}
正确的做法是什么,如果日期在明年......等等
最佳答案
你可以使用 rSchedule为此(我维护的 javascript 循环库)。
例子:
I have a date which flagged as recurring date (occurs every year), this date is 1st April, 2014, and starting form 2014 this event will occur yearly.
import { Schedule } from '@rschedule/rschedule';
import { MomentDateAdapter } from '@rschedule/moment-date-adapter';
import * as moment from 'moment';
const schedule = new Schedule({
rrules: [{
frequency: 'YEARLY',
start: moment([2014, 3, 1]),
}],
dateAdapter: MomentDateAdapter,
});
I have a job which run weekly, in this job I insert in the DB events that will occur in the coming 180 days only starting from today, other events will be discarded.
const next180Days = moment().add(180, 'days').endOf('day');
if (schedule.occursBetween(moment(), next180Days)) {
// do stuff...
}
关于javascript - 将 momentjs 与重复日期一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34160743/