Счетчик доставки, который исключает воскресенье и праздничные дни

#javascript #jquery #wordpress #counter

#javascript #jquery #wordpress #счетчик

Вопрос:

Я использую счетчик дней доставки, чтобы показать своим клиентам, в какой день они могут ожидать свою посылку. Но … есть проблема. Дни доставки должны быть (день заказа 2 дня (до 12 часов (Германия)), если не 3 дня), которые работают как заклинание. Но я не могу разобраться, исключая воскресенья. На данный момент счетчик добавляет один день, если это воскресенье… Но, например, если это суббота, счетчик не добавляет день (для даты недоставки)

банкомат (после 12 часов):

17.09.2020 — доставка в понедельник = правильно

18.09.2020 — доставка в понедельник = неверно (должен быть вторник)

19.09.2020 — доставка во вторник = неверно (должна быть среда)

20.09.2020 — доставка в среду = правильно

Я думаю, проблема в том, что счетчик добавляет только один день, если «сегодня» — воскресенье, но не если один из следующих 3 дней — воскресенье… но я не совсем уверен, как это решить.

Это мой скрипт:

  <script type='text/javascript'>
    jQuery(function($) {
        // Current date/time
        var now = new Date();
        // Placeholder for delivery time
        var deliveryDate;
        // Amount of days to deliver
        var deliveryDays = 2;
        // Working hours (in UTC -1)
        var workingHours = [0 , 9];

        // Non-delivery days/dates
        // Must match the format returned by .toString(): 
        // Mon Sep 28 1998 14:36:22 GMT-0700 (Pacific Daylight Time)
        var nonDelivery = [
            "Sun",
            "Dec 24",
            "Dec 25",
            "Dec 31",
            "Jan 1"
        ];

        // Create a regular expression
        var rxp = new RegExp(nonDelivery.join("|"));

        // addDay holds the amount of days to add to delivery date
        var addDay = deliveryDays;

        // Add an extra day if outside of working hours
        var currentHour = now.getUTCHours();
        if (currentHour < workingHours[0] || 
            currentHour > workingHours[1]) {
            addDay  ;
        }

        // Create our delivery date
        while (!deliveryDate) {
            // Add day(s) to delivery date
            now.setDate(
                now.getDate()   addDay
            );
            deliveryDate = now;
            if (rxp.test(deliveryDate)) {
                addDay = 1;
                deliveryDate = false;
            }
        }

        // Format
        var locale = "de-DE"; // Our locale
        //  var day = deliveryDate.toLocaleDateString(locale, { day: "numeric" });
        var weekday = deliveryDate.toLocaleDateString(locale, { weekday: "long" });
        $('#countdownDate').html( weekday   " " );            
        });
  </script>  

Надеюсь, кто-нибудь сможет мне с этим помочь…
Большое спасибо!

Комментарии:

1. Учитывая, что у вас есть другие даты недоставки, которые нужно исключить, и, предполагая, что они также должны быть пропущены, как воскресенья (а не просто следующая доступная дата), тогда вам, возможно, лучше перейти по дням — т. Е. Вместо того, чтобы добавлять 2 дня, добавьте 1 день дважды, каждый раз проверяя, является ли это днем недоставки, и пропуская (добавляя еще один день), если это

2. итак, у вас есть решение?

3. Да, сделал это так, как сказал @freedomn-m .. вместо того, чтобы добавлять один раз 2 дня, я добавил один день, проверил, не является ли это днем доставки, а затем добавил еще один… Просто ^^