首页 > 解决方案 > 将javascript从单个日期排除转换为多个日期

问题描述

凭借我们有限的知识,我们能够根据工作日和时间在日期传递模块中排除某些日期。请参阅下面的代码。

但是现在,如果您选择运营商 99,我们希望排除明年的所有星期三和星期六。因此,如果选择了这个特定的运营商,那么从今天开始,一年内的每个星期三和星期六都会有多个 disabledDays.push(excldatum)。

有人可以帮助我们如何编写该代码吗?

    var selected_carrier = parseInt($('.delivery_option_radio:checked').val());
    var weekdag = new Date().getDay();
    var uur = new Date().getHours();
    var vandaag = new Date();
    var morgen = new Date();
    morgen.setDate(vandaag.getDate() + 1);
    var exclmaand = morgen.getMonth() + 1;
    var excldag = morgen.getDate();
    var excldatum = exclmaand + "-" + excldag;

    // carrier is postnl
    if (selected_carrier == 99) {
        // weekdag 0 is zondag t/m 6 is zaterdag
        if (weekdag > -1 && weekdag < 5) {
            // na 23 uur
            if (uur >= 23) {
                disabledDays.push(excldatum);
            }
        }
    }

    if (selected_carrier == 99) {
        // weekdag 5 is vrijdag
        if (weekdag == 5) {
            // na 10 uur
            if (uur >= 10) {
                disabledDays.push(excldatum);
            }
        }
    }

标签: javascriptprestashop-1.6

解决方案


类似以下代码的内容可能对您有用。它获取从今天开始的接下来 365 天内指定的 weekdaysToProcess 的所有日期。例如。[3,6] 周三和周六。

当然,您可以添加您喜欢的任何其他过滤器。

    function GetDatesForWeekdaysForNext365Days(weekdaysToProcess) {
        var currentDate = new Date();
        var foundDates = [];

        for (var day = 0; day < 365; day++) {
            var calculatedDate = new Date();
            calculatedDate.setDate(currentDate.getDate() + day);
            var calculatedWeekDay = calculatedDate.getDay();
            if (weekdaysToProcess.includes(calculatedWeekDay)) {
                foundDates.push(calculatedDate);
            }
        }
        return foundDates;
    }

可以为运营商 99 调用该函数,例如: disabledDays = GetDatesForWeekdaysForNext365Days([3,6]);


推荐阅读