【问题标题】:Weekly scheduler with moment.js带有 moment.js 的每周调度程序
【发布时间】:2014-09-25 20:44:54
【问题描述】:

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

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

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

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

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

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

moment.js 是否适合我的每周计划程序?

【问题讨论】:

    标签: javascript momentjs


    【解决方案1】:

    来自https://github.com/gf3/moment-range docs。

    了解您的时刻是否在某个日期范围内:

    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));
    

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

    【讨论】:

    • 这会检查 DATE 是否在 DATE 范围内。我需要检查星期几是否在“每周范围”内。这意味着如果日期是从 2012-1-15 10:00 到 2012-1-16 22:00,并且这些日期是星期一和星期二(比如说)。它应该在该时间范围内的每个星期一和星期二返回 true。
    • 我想越来越近了。但这不检查时间是否在范围内,只检查星期几?我需要的是一个“开放时间安排”,所以时间和星期几一样重要。
    猜你喜欢
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多