проверьте код
Всем привет,
нужно было написать хтмл код для онлайн шопа где прописывалось бы время когда можно забрать товар. сразу скажу с кодом я даже не на ВЫ. Этот код мне сделал чатжопати и все вроде бы работает кроме скрипта с выходными. Если сегодня (после 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> |
Uhu,
var следующий_рабочий_день if(если текущая выходной или праздник или время после 16) следующий_рабочий_день с 12 else сегодня с 12 alles |
спасибо большое за ответ, но как говорил ранее с кодом совсем не дружу... не могли бы вы мне его подправить если не трудно? :no:
условия такие: -если сегодня Мо-Пт между 00:01 и 09:59, то вместо "Tag" должно стоять "heute" а вместо "Uhrzeit" - "ab 12 Uhr" -если сегодня Мо-Пт между 10:00 и 15:59, то вместо "Tag" должно стоять "heute" а вместо "Uhrzeit" - "актуальное время + 2 часа округленное на 30 мин" -если сегодня Мо-Чт между 16:01 и 23:59, то вместо "Tag" должно стоять "morgen" а вместо "Uhrzeit" - "ab 12 Uhr" -если Пт между 16:01 и 23:59, то вместо "Tag" должно стоять "Am Montag + дата след. Понедельника" а вместо "Uhrzeit" - "ab 12 Uhr" -если сегодня Сб-Вк между 00:01 и 09:59, то вместо "Tag" должно стоять "Am Montag + дата след. Понедельника" а вместо "Uhrzeit" - "ab 12 Uhr" -Если сегодня (после 16 часов) или завтра один отпускных дней, то должна выплюнуться дата след. свободного дня. например 27.07.2023, 28.07.2023, 01.08.2023, 05.08.2023 |
Uhu,
условия некорректные завтрашнего утра и следующего понедельника, может не быть, если на этот день будет праздник. |
одно условие не может "перекрыть" другое? хммм.. надо подумать как решить
|
время когда можно забрать товар
Uhu,
<!DOCTYPE html> <html> <head> <title>Versandtermin</title> <meta charset="utf-8"> <script> function getShippingDate() { let today = new Date(); let hour = today.getHours(); let shippingDate = document.getElementById("shipping-date"); let shippingTime = document.getElementById("shipping-time"); let nextDay = getNextFreeDay(today); let Tag = `morgen ${nameWeekday(nextDay)} ${dateFormat(nextDay)}`; let Uhrzeit = "ab 12 Uhr"; if (!isDayHoliday(today)) { if (hour < 10) { Tag = "heute" } else if (hour < 16) { Tag = "heute"; Uhrzeit = `ab ${hour+2} Uhr` } } shippingDate.innerHTML = Tag; shippingTime.innerHTML = Uhrzeit; function dateFormat(date) { let formatter = new Intl.DateTimeFormat("ru", { day: "2-digit", month: "2-digit", year: "numeric" }); return formatter.format(date) } function nameWeekday(date) { let formatter = new Intl.DateTimeFormat("de", { weekday: "long" }); return formatter.format(date) } function isDayHoliday(date) { let holidays = ["26.07.2023", "28.07.2023", "01.08.2023", "05.08.2023"]; return holidays.includes(dateFormat(date)) || date.getDay() === 6 || date.getDay() === 0 || (date.getDay() === 5 && date.getHours() >= 16) } function getNextFreeDay(date) { do { date.setDate(date.getDate() + 1); } while (isDayHoliday(date)) return date; } } document.addEventListener('DOMContentLoaded', getShippingDate) </script> </head> <body> <h1>Versandtermin</h1> <p>Angestrebter Versand- / Abholtermin: <span id="shipping-date"></span> <span id="shipping-time"></span></p> </body> </html> |
переиграли все на яве, но что то неработаю праздники....
function getShippingDate() { var today = new Date(); var day = today.getDay(); var hour = today.getHours(); var minute = today.getMinutes(); var holidays = ["28.07.2023", "31.07.2023"]; var shippingDate; var shippingTime; if (day >= 1 && day <= 5) { if (hour >= 0 && hour <= 9 && minute >= 1 && minute <= 59) { if (!isHoliday(getNextDay())) { shippingDate = "heute"; shippingTime = "ab 12 Uhr"; } else { shippingDate = getNextWorkDay(); } } else if (hour >= 10 && hour <= 15 && minute >= 0 && minute <= 59) { if (!isHoliday(today)) { shippingDate = "heute"; var currentHour = hour + 2; var roundedHour = Math.ceil(currentHour / 0.5) * 0.5; shippingTime = "ab " + roundedHour + " Uhr"; } else { shippingDate = getNextWorkDay(); shippingTime = "ab 12 Uhr"; } } else if (hour >= 16 && hour <= 23 && minute >= 1 && minute <= 59) { if (!isHoliday(getNextDay())) { shippingDate = "morgen"; shippingTime = "ab 12 Uhr"; } else { shippingDate = getNextWorkDay(); shippingTime = "ab 12 Uhr"; } } } else if (day === 5 && hour >= 16 && hour <= 23 && minute >= 1 && minute <= 59) { shippingDate = getNextWorkDay(); shippingTime = "ab 12 Uhr"; } else if (day === 6 || day === 0) { shippingDate = getNextWorkDay(); shippingTime = "ab 12 Uhr"; } return "Angestrebter Versand- / Abholtermin: " + shippingDate + " " + shippingTime; } function isHoliday(date) { var dateString = date.toLocaleDateString(); return holidays.includes(dateString); } function getNextDay() { var today = new Date(); var nextDay = new Date(today.getFullYear(), today.getMonth(), today.getDate() + 1); return nextDay; } function getNextWorkDay() { var nextDay = getNextDay(); while (isHoliday(nextDay) || nextDay.getDay() === 6 || nextDay.getDay() === 0) { nextDay.setDate(nextDay.getDate() + 1); } return nextDay.toLocaleDateString(); } console.log(getShippingDate()); |
Цитата:
Цитата:
Цитата:
|
Цитата:
например если сегодня ПН-ПТ между 00:01 и 9:59 а звтра нет отпуска то.... видимо ему не посилам :( Цитата:
|
мы немного изменили условия:
если сегодня ПН-ПТ между 00:01 и 9:59 и завтра не отпуск, то вместо "Tag" должно стоять "heute" (сегодня) а вместо "Uhrzeit" стоять "ab 12 Uhr", если же затра отпуск тогда вместо "Tag" стоит "дата след. свободный рабочий день" и время "ab 12 Uhr" если сегодня ПН-ПТ между 10:00 и 15:59 и сегодня не отпуск, то вместо "Tag" должно стоять "heute" (сегодня) а вместо "Uhrzeit" стоять "актуальное время + 2 часа (округлить до 30 мин.", если же сегодня отпуск тогда вместо "Tag" стоит "дата след. свободный рабочий день" и время "ab 12 Uhr" если сегодня ПН-ЧТ между 16:01 и 23:59 и завтра не отпуск, то вместо "Tag" должно стоять "morgen" (завтра) а вместо "Uhrzeit" стоять "ab 12 Uhr", если же затра отпуск тогда вместо "Tag" стоит "дата след. свободный рабочий день" и время "ab 12 Uhr" если сегодня ПТ между 16:01 и 23:59 тогда вместо "Tag" стоит "дата след. свободный рабочий день" и время "ab 12 Uhr" если сегодня СБ или ВК тогда вместо "Tag" стоит "дата след. свободный рабочий день" и время "ab 12 Uhr" |
Часовой пояс GMT +3, время: 06:24. |