Проверка, если дата выходные 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 71

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).

это работает для меня и является многоразовым.

function isThisDayAWeekend($date) {

    $timestamp = strtotime($date);

    $weekday= date("l", $timestamp );

    if ($weekday =="Saturday" OR $weekday =="Sunday") { return true; } 
    else {return false; }

}