дата — Фильтр Рабочие дни с выходных Переполнение стека

Я хочу показать ошибку, если это не будний день (вы можете ввести дату в разделе HTML)

setlocale(LC_TIME, "de_DE.utf8");
$dateString = strftime('%A' , $dateTimestamp1);
substr($dateString, 0, 2);
if ($dateString == 'So' || $dateString == 'Sa') {
throw new FormInputException('date', 'Invalid Date');
}

0

Решение

Ты можешь позвонить date('w', $date) где w установит результат в числовое представление дня недели, где 0 представляет воскресенье, 1 — понедельник … 6 — субботу и т. д. Поэтому с помощью простой пользовательской функции вы можете определить, попадает ли дата в день недели:

function dateIsWeekday($date) {
$day = date('w', $date);
return $day > 0 && $day < 6;
}

ты можешь позвонить:

if (!dateIsWeekday($dateTimestamp1)) {
throw new FormInputException('date', 'Date is not a weekday');
}
1

Другие решения

Вы не указали четко, в чем заключается ваша проблема, потому что подход, который вы используете, в основном нормальный. Однако есть несколько вещей, которые нужно иметь в виду:

  1. Более простой способ
    PHP уже дает вам возможность проверять выходные (в зависимости от вашей версии PHP). Проверьте этот вопрос, на который уже есть ответ: Выходные в PHP

  2. Использование substr
    Это на самом деле не нужно. $dateString = strftime('%a' , $dateTimestamp1); уже даст вам сокращенную строку (маленький% а).

  3. Использование LC_TIME
    Исус может заключаться в том, что ваше время фактически не переводится на немецкий язык. Это зависит от того, установлен ли на вашем сервере языковой пакет (de-DE.utf8) или нет. На самом деле, используя основные методы PHP для проверки выходных, вам даже не нужно заботиться о таких вещах (см. 1.).

0

если кто-то еще получил проблему, я исправил ее — вот код

$dateTimestamp1 = strtotime($this->date);

//setlocale(LC_TIME, "de_DE.utf8");
$day = date('N', $dateTimestamp1);
if ($day == 6 || $day == 7) {
throw new FormInputException('date', 'Invalid Date');
}
0
По вопросам рекламы [email protected]