moment.js的每周调度程序

Weekly scheduler with moment.js

本文关键字:调度程序 每周 js moment      更新时间:2023-09-26

我正在尝试用javascript构建一个每周调度程序,允许函数仅在特定的时间范围和一周中的几天范围内运行。

将有两个完整的输入日期。"发件人"answers"收件人"。我需要检查"现在"是否在两个日期时间和星期几的范围内。

我已经查看了moment.js和这两个插件的文档:

https://github.com/gf3/moment-range

https://github.com/icambron/twix.js

我在这些框架中没有找到任何明确的解决方案,但我很惊讶,由于这些框架看起来如此完整,它似乎并不存在。也许我错过了什么?

moment.js是我每周日程安排的合适工具吗?

来源https://github.com/gf3/moment-range文档。

找出你的时刻是否在日期范围内:

var start = new Date(2012, 4, 1);
var end   = new Date(2012, 4, 23);
var when  = moment("2012-05-10", "YYYY-MM-DD");
var range = moment().range(start, end);
when.within(range); // true

更新:

这将检查一周中的哪一天是否在范围内。

function checkDay(range, when) {
    var isWithin = false;
    range.by('days', function(moment){
        if(when.within(range) && moment.day() === when.day) isWithin = true;
    });
    return isWithin;
}
console.log( checkDay(range, when) );

再次更新:

根据你的反馈,我认为这应该奏效:

var startDate = new Date(2012, 4, 1);
var endDate = new Date(2012, 4, 23);
var dateRange = moment().range(startDate, endDate);
var days = [1,2,3,4,5]; // mon-fri
var startTime = moment('09:00 +0000', 'HH:mm Z'); // 9:00 am UTC
var endTime = moment('17:00 +0000', 'HH:mm Z'); // 5:00 pm UTC
var timeRange = moment().range(startTime, endTime);
function isWithin(dateRange, timeRange, days, when) {
    return (when.within(dateRange) && !!~days.indexOf(when.day()) && moment(when.format('HH:mm Z'), 'HH:mm Z').within(timeRange));
}
var when = moment('2012-05-22 12:32 +0000', 'YYYY-MM-DD HH:mm Z');
console.log(isWithin(dateRange, timeRange, days, when));

我相信这能帮你清理一下,但我认为这会让你朝着正确的方向前进。