检查日期是否是周末PHP

Checking if date is weekend PHP

此函数似乎只返回false。你们中有人也一样吗?我肯定我忽略了一些东西,但是,新鲜的眼睛和所有这些…

1
2
3
4
5
6
7
8
9
10
11
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";
    }
}

我使用以下方法调用函数:

1
$isthisaweekend = isweekend('2011-01-01');


如果php大于等于5.1:

1
2
3
function isWeekend($date) {
    return (date('N', strtotime($date)) >= 6);
}

否则:

1
2
3
4
function isWeekend($date) {
    $weekDay = date('w', strtotime($date));
    return ($weekDay == 0 || $weekDay == 6);
}


另一种方法是使用datetime类,这种方法还可以指定时区。注意:PHP 5.3或更高版本。

1
2
3
4
5
// For the current date
function isTodayWeekend() {
    $currentDate = new DateTime("now", new DateTimeZone("Europe/Amsterdam"));
    return $currentDate->format('N') >= 6;
}

如果需要检查某个日期字符串,可以使用datetime::createfromformat

1
2
3
4
function isWeekend($date) {
    $inputDate = DateTime::createFromFormat("d-m-Y", $date, new DateTimeZone("Europe/Amsterdam"));
    return $inputDate->format('N') >= 6;
}

这种方法的好处在于,您可以在不改变PHP中全局时区的情况下指定时区,这可能会在其他脚本(例如Wordpress)中产生副作用。


在这里:

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

代码的工作版本(来自BoltClock指出的错误):

1
2
3
4
5
6
7
8
9
10
11
12
13
<?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,您可能需要使用:

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

如果今天是周末,则返回"真",否则返回"假"。


这对我有用,而且是可重用的。

1
2
3
4
5
6
7
8
9
10
function isThisDayAWeekend($date) {

    $timestamp = strtotime($date);

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

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

}


对于像我这样的非极简主义者,有一个pecl扩展名叫做"intl"。我将它用于IDN转换,因为它比"IDN"扩展和其他一些N1类(如"intldateformatter")工作得更好。

好吧,我想说的是,"国际长途"分机有一个叫做"国际长途"的班,可以应付许多国际国家(例如,在沙特阿拉伯,星期天不是周末)。IntlCalendar有一个方法IntlCalendar::IsWeekend。也许你们可以试一试,我喜欢这些国际课程中的"它几乎适用于每个国家"这一事实。

编辑:不太确定,但是由于php 5.5.0,intl扩展与php(--enableintl)捆绑在一起。