检查日期是否是周末PHP

时间:2011-01-26 07:52:10

标签: php date

这个函数似乎只返回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 个答案:

答案 0 :(得分:185)

如果你有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);
}

答案 1 :(得分:36)

另一种方法是使用 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)。

答案 2 :(得分:9)

下面:

function isweekend($year, $month, $day)
{
    $time = mktime(0, 0, 0, $month, $day, $year);
    $weekday = date('w', $time);
    return ($weekday == 0 || $weekday == 6);
}

答案 3 :(得分:8)

代码的工作版本(来自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编辑器(在我的情况下)。所以我在这里发布了更正后的版本。

答案 4 :(得分:7)

如果你正在使用上面的PHP 5.5或PHP 7,你可能想要使用:

function isTodayWeekend() {
    return in_array(date("l"), ["Saturday", "Sunday"]);
}

它将返回&#34; true&#34;如果今天是周末而且&#34;假&#34;如果没有。

答案 5 :(得分:1)

对于像我这样不太简约的人,有一个名为“intl”的PECL扩展名。 我使用它进行idn转换,因为它比“idn”扩展和其他一些n1类(如“IntlDateFormatter”)更好地工作。

嗯,我想说的是,“intl”扩展名有一个名为“IntlCalendar”的类,它可以处理许多国际国家(例如在沙特阿拉伯,周日不是周末)。 IntlCalendar有一个方法IntlCalendar::isWeekend。也许你们给它一个机会,我喜欢这个“几乎每个国家都适用于这些国际班级的事实”。

编辑:不太确定但是从PHP 5.5.0开始,intl扩展与PHP捆绑(--enable-intl)。

答案 6 :(得分:1)

这对我有效并且可以重复使用。

function isThisDayAWeekend($date) {

    $timestamp = strtotime($date);

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

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

}