Я хочу показать ошибку, если это не будний день (вы можете ввести дату в разделе 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');
}
Ты можешь позвонить 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');
}
Вы не указали четко, в чем заключается ваша проблема, потому что подход, который вы используете, в основном нормальный. Однако есть несколько вещей, которые нужно иметь в виду:
Более простой способ
PHP уже дает вам возможность проверять выходные (в зависимости от вашей версии PHP). Проверьте этот вопрос, на который уже есть ответ: Выходные в PHP
Использование substr
Это на самом деле не нужно. $dateString = strftime('%a' , $dateTimestamp1);
уже даст вам сокращенную строку (маленький% а).
Использование LC_TIME
Исус может заключаться в том, что ваше время фактически не переводится на немецкий язык. Это зависит от того, установлен ли на вашем сервере языковой пакет (de-DE.utf8) или нет. На самом деле, используя основные методы PHP для проверки выходных, вам даже не нужно заботиться о таких вещах (см. 1.).
если кто-то еще получил проблему, я исправил ее — вот код
$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');
}