Показать сообщение отдельно
  #1 (permalink)  
Старый 26.07.2023, 12:52
Uhu Uhu вне форума
Новичок на форуме
Отправить личное сообщение для Uhu Посмотреть профиль Найти все сообщения от Uhu
 
Регистрация: 26.07.2023
Сообщений: 6

проверьте код
Всем привет,

нужно было написать хтмл код для онлайн шопа где прописывалось бы время когда можно забрать товар.

сразу скажу с кодом я даже не на ВЫ. Этот код мне сделал чатжопати и все вроде бы работает кроме скрипта с выходными. Если сегодня (после 16 часов) или завтра один отпускных дней, то должна выплюнуться дата след. свободного дня. Но он как то этот момент игрнорирует.

Заранее благодарю!

<!DOCTYPE html>
<html>
<head>
    <title>Versandtermin</title>
    <script>
        function getShippingDate() {
            var today = new Date();
            var day = today.getDay();
            var hour = today.getHours();
            var minute = today.getMinutes();
            var shippingDate = document.getElementById("shipping-date");
            var shippingTime = document.getElementById("shipping-time");
            var holidays = ["27.07.2023", "28.07.2023", "01.08.2023", "05.08.2023"];

            if (day >= 1 && day <= 5) {
                if (hour >= 0 && hour <= 9 && minute >= 1 && minute <= 59) {
                    shippingDate.innerHTML = "heute";
                    shippingTime.innerHTML = "ab 12 Uhr";
                } else if (hour >= 10 && hour <= 15 && minute >= 0 && minute <= 59) {
                    shippingDate.innerHTML = "heute";
                    var currentHour = hour + 2;
                    var roundedHour = Math.ceil(currentHour / 0.5) * 0.5;
                    shippingTime.innerHTML = "ab " + roundedHour + " Uhr";
                } else if (hour >= 16 && hour <= 23 && minute >= 1 && minute <= 59) {
                    shippingDate.innerHTML = "morgen";
                    shippingTime.innerHTML = "ab 12 Uhr";
                }
            } else if (day === 5 && hour >= 16 && hour <= 23 && minute >= 1 && minute <= 59) {
                var nextMonday = getNextMonday();
                shippingDate.innerHTML = "Am Montag den " + nextMonday;
                shippingTime.innerHTML = "ab 12 Uhr";
            } else if (day === 6 || day === 0) {
                var nextMonday = getNextMonday();
                shippingDate.innerHTML = "Am Montag den " + nextMonday;
                shippingTime.innerHTML = "ab 12 Uhr";
            } else if ((hour >= 16 && minute >= 0) || isNextDayHoliday()) {
                var nextFreeDay = getNextFreeDay();
                shippingDate.innerHTML = "Am " + nextFreeDay;
                shippingTime.innerHTML = "ab 12 Uhr";
            }
        }

        function getNextMonday() {
            var today = new Date();
            var day = today.getDay();
            var daysUntilNextMonday = 1 + (8 - day) % 7;
            var nextMonday = new Date(today.getFullYear(), today.getMonth(), today.getDate() + daysUntilNextMonday);
            return nextMonday.toLocaleDateString();
        }

        function isNextDayHoliday() {
            var today = new Date();
            var tomorrow = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
            var holidays = ["26.07.2023", "28.07.2023", "01.08.2023", "05.08.2023"];
            var tomorrowString = tomorrow.toLocaleDateString();
            return holidays.includes(tomorrowString);
        }

        function getNextFreeDay() {
            var today = new Date();
            var nextDay = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1);
            var holidays = ["26.07.2023", "28.07.2023", "01.08.2023", "05.08.2023"];
            while (holidays.includes(nextDay.toLocaleDateString()) || nextDay.getDay() === 6 || nextDay.getDay() === 0) {
                nextDay.setDate(nextDay.getDate() + 1);
            }
            return nextDay.toLocaleDateString();
        }
    </script>
</head>
<body onload="getShippingDate()">
    <h1>Versandtermin</h1>
    <p>Angestrebter Versand- / Abholtermin: <span id="shipping-date"></span> <span id="shipping-time"></span></p>
</body>
</html>
Ответить с цитированием