Всем привет,
нужно было написать хтмл код для онлайн шопа где прописывалось бы время когда можно забрать товар.
сразу скажу с кодом я даже не на ВЫ. Этот код мне сделал чатжопати и все вроде бы работает кроме скрипта с выходными. Если сегодня (после 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>