检查日期是否是周末PHP

Jam*_*ars 83 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";
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用以下函数调用该函数:

$isthisaweekend = isweekend('2011-01-01');
Run Code Online (Sandbox Code Playgroud)

Thi*_*ter 193

如果你有PHP> = 5.1:

function isWeekend($date) {
    return (date('N', strtotime($date)) >= 6);
}
Run Code Online (Sandbox Code Playgroud)

除此以外:

function isWeekend($date) {
    $weekDay = date('w', strtotime($date));
    return ($weekDay == 0 || $weekDay == 6);
}
Run Code Online (Sandbox Code Playgroud)

  • 虽然这做同样的事情,但我会说明确检查对于阅读代码的人来说更为明显. (21认同)
  • 嗯,有人说代码应该是可读的,没有很多评论.好的代码是可读的 - 并不一定很短.#CleanCode (12认同)
  • 如果你使用PHP <5然后使用`return date('w',strtotime($ date))%6 == 0`稍微短一些. (9认同)
  • 那么这就是评论的意思. (2认同)

Bri*_*ian 45

另一种方法是使用DateTime类,这样你也可以指定时区.注意:PHP 5.3或更高版本.

// For the current date
function isTodayWeekend() {
    $currentDate = new DateTime("now", new DateTimeZone("Europe/Amsterdam"));
    return $currentDate->format('N') >= 6;
}
Run Code Online (Sandbox Code Playgroud)

如果您需要能够检查某个日期字符串,则可以使用DateTime :: createFromFormat

function isWeekend($date) {
    $inputDate = DateTime::createFromFormat("d-m-Y", $date, new DateTimeZone("Europe/Amsterdam"));
    return $inputDate->format('N') >= 6;
}
Run Code Online (Sandbox Code Playgroud)

这种方式的优点在于您可以在不改变PHP全局时区的情况下指定时区,这可能会导致其他脚本(例如Wordpress)的副作用.


rek*_*o_t 9

这里:

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


Hoà*_*ong 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";
}

?>
Run Code Online (Sandbox Code Playgroud)

流浪的"{"很难看到,特别是没有一个像样的PHP编辑器(在我的情况下).所以我在这里发布了更正的版本.


Har*_*vey 8

如果您使用上面的PHP 5.5或PHP 7,您可能希望使用:

function isTodayWeekend() {
    return in_array(date("l"), ["Saturday", "Sunday"]);
}
Run Code Online (Sandbox Code Playgroud)

如果今天是周末,它将返回"true",如果不是,则返回"false".

  • 这仅适用于英语网站。它可以修改,但对于多种语言的网站来说会变得很麻烦。 (2认同)