Проверка, если дата выходные PHP
эта функция только возвращает значение false. Вы получаете то же самое? Я уверен, что я упускаю что-то, однако, свежие глаза и все такое ...
function isweekend($date){
$date = strtotime($date);
$date = date("l", $date);
$date = strtolower($date);
echo $date;
if($date == "saturday" || $date == "sunday") {
return "true";
} else {
return "false";
}
}
Я вызываю функцию через следующие:
$isthisaweekend = isweekend('2011-01-01');
7 ответов:
Если у вас есть PHP >= 5.1:
function isWeekend($date) { return (date('N', strtotime($date)) >= 6); }
в противном случае:
function isWeekend($date) { $weekDay = date('w', strtotime($date)); return ($weekDay == 0 || $weekDay == 6); }
другой способ-использовать DateTime класс, таким образом, вы также можете указать часовой пояс. Примечание: PHP 5.3 или выше.
// For the current date function isTodayWeekend() { $currentDate = new DateTime("now", new DateTimeZone("Europe/Amsterdam")); return $currentDate->format('N') >= 6; }
Если вам нужно иметь возможность проверить определенную строку даты, вы можете использовать DateTime:: createFromFormat
function isWeekend($date) { $inputDate = DateTime::createFromFormat("d-m-Y", $date, new DateTimeZone("Europe/Amsterdam")); return $inputDate->format('N') >= 6; }
красота этого способа заключается в том, что вы можете указать часовой пояс без изменения часового пояса глобально в PHP, что может вызвать побочные эффекты в других сценариях (например. Wordpress).
здесь:
function isweekend($year, $month, $day) { $time = mktime(0, 0, 0, $month, $day, $year); $weekday = date('w', $time); return ($weekday == 0 || $weekday == 6); }
рабочая версия вашего кода (из ошибок, указанных BoltClock):
<?php $date = '2011-01-01'; $timestamp = strtotime($date); $weekday= date("l", $timestamp ); $normalized_weekday = strtolower($weekday); echo $normalized_weekday ; if (($normalized_weekday == "saturday") || ($normalized_weekday == "sunday")) { echo "true"; } else { echo "false"; } ?>
шальной " {"трудно увидеть, особенно без приличного редактора PHP (в моем случае). Поэтому я публикую исправленную версию здесь.
Если вы используете PHP 5.5 или PHP 7 выше, вы можете использовать:
function isTodayWeekend() { return date("l") == "Saturday" or date("l") == "Sunday"; }
и он вернет "true", если сегодня выходные и" false", если нет.
для таких парней, как я, которые не минималистичны, есть расширение PECL под названием " intl". Я использую его для преобразования idn, так как он работает намного лучше, чем расширение "idn" и некоторые другие классы n1, такие как "IntlDateFormatter".
Ну, я хочу сказать, что расширение " intl "имеет класс под названием" IntlCalendar", который может обрабатывать многие международные страны (например, в Саудовской Аравии воскресенье не является выходным днем). В IntlCalendar есть способ IntlCalendar:: isWeekend для этого. Может быть, вы, ребята, дадите ему шанс, мне нравится, что "это работает почти для каждой страны" факт на этих intl-классах.
EDIT: не совсем уверен, но начиная с PHP 5.5.0, расширение intl поставляется в комплекте с PHP (--enable-intl).