这个函数似乎只返回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');
答案 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; }
}