检查日期是否为周末PHP

问题描述:

此函数似乎只返回false。你们有没有变得一样?我敢肯定,我俯瞰的东西,但是,新鲜的眼光和所有...检查日期是否为周末PHP

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'); 
+12

你的'true`和`false`不应该被引用为字符串。另外你的代码应该给出一个分析错误,甚至根本就不会运行,因为你的if中有````的流浪。 – BoltClock 2011-01-26 07:54:30

如果您有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); 
} 
+6

如果您使用PHP Jim 2012-01-16 14:25:59

+13

虽然这样做是相同的,但我认为对于阅读代码的人来说,显式检查更为明显。 – ThiefMaster 2012-01-16 15:21:24

+2

然后,这又是什么意见。 – 2015-09-12 17:41:18

这里:

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 
$strt_date = date_create('2013-11-11'); 
$end_date = date_create('2013-11-18'); 
date_sub($strt_date, date_interval_create_from_date_string('1 day')); 
$interval = date_diff($strt_date, $end_date); 
$num = $interval->format('%a'); 
for ($i = 0; $i < $num; $i++) { 
    date_add($strt_date, date_interval_create_from_date_string('1 day')); 
    $next_day = date_format($strt_date, 'd-m-Y'); 
    echo "<br>"; 

    $new_date = new DateTime($next_day); 
    $weeknum = $new_date->format('w'); 
    if (($weeknum != 0) && ($weeknum != 6)) { 
     echo "not a holiday :$next_day "; 
    } 
} 
?> 

对于像我这样并不简约的人来说,有一个名为“intl”的PECL扩展名。 我将它用于idn转换,因为它的工作方式比“idn”扩展和“IntlDateFormatter”等其他n1类更好。

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

编辑:不太确定,但自PHP 5.5.0以来,intl扩展与PHP(--enable-intl)捆绑在一起。

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

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

如果您需要能够检查某个日期字符串,你可以使用日期时间:: 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 date("l") == "Saturday" or date("l") == "Sunday"; 
} 

,它会返回“真”如果今天是周末,“假”,如果没有。