gpt4 book ai didi

javascript - 使用 moment.js 进行每周调度

转载 作者:行者123 更新时间:2023-11-28 07:56:14 24 4
gpt4 key购买 nike

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

将有两个完整的输入日期。 “从”和“到”。我需要检查“现在”是否在两个日期时间和星期几范围内。

我浏览了 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));

我确信它可以让你清理一些东西,但我认为它应该让你朝着正确的方向前进。

关于javascript - 使用 moment.js 进行每周调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26047787/

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