Эта функция, кажется, возвращает только 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');
true
andfalse
не следует указывать как строки. Также ваш код должен выдавать ошибку синтаксического анализа и даже не запускаться вообще из-за ошибочного}
в вашем if.Ответы:
Если у вас 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); }
источник
return date('w', strtotime($date)) % 6 == 0
будет немного короче.Другой способ - использовать класс 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).
источник
Если вы используете PHP 5.5 или PHP 7 выше, вы можете использовать:
function isTodayWeekend() { return in_array(date("l"), ["Saturday", "Sunday"]); }
и он вернет true, если сегодня выходные, и false, если нет.
источник
Вот:
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 (в моем случае). Так что выкладываю исправленную версию сюда.
источник
Для парней вроде меня, которые не являются минималистами, есть расширение PECL под названием " intl ". Я использую его для преобразования idn, так как он работает лучше, чем расширение idn и некоторые другие классы n1, такие как IntlDateFormatter.
Что ж, я хочу сказать, что расширение "intl" имеет класс под названием "IntlCalendar", который может работать со многими международными странами (например, в Саудовской Аравии воскресенье - не выходной день). Для этого в IntlCalendar есть метод IntlCalendar :: isWeekend . Может быть, вы, ребята, попробуете, мне нравится, что "это работает почти для каждой страны" на этих международных классах.
РЕДАКТИРОВАТЬ: Не совсем уверен, но с PHP 5.5.0 расширение intl связано с PHP (--enable-intl).
источник
Это работает для меня и может использоваться повторно.
function isThisDayAWeekend($date) { $timestamp = strtotime($date); $weekday= date("l", $timestamp ); if ($weekday =="Saturday" OR $weekday =="Sunday") { return true; } else {return false; } }
источник