检查date是周末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'); 

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

如果你需要能够检查某个datestring,你可以使用DateTime :: createFromFormat

 function isWeekend($date) { $inputDate = DateTime::createFromFormat("dmY", $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"; } ?> 

stream浪的“{”很难看,尤其是没有一个体面的PHP编辑器(在我的情况下)。 所以我在这里发布更正的版本。

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

 function isTodayWeekend() { return date("l") == "Saturday" or date("l") == "Sunday"; } 

如果今天是周末,它将返回“真”,否则返回“假”。

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

那么,我想说的是,“intl”扩展有一个叫做“IntlCalendar”的类,可以处理很多国际国家(例如在沙特阿拉伯,周日不是周末)。 IntlCalendar有一个IntlCalendar :: isWeekend的方法。 也许你们有这个机会,我喜欢这个“对几乎所有国家都适用”的国际class级。

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

 <?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, 'dm-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 "; } } ?>