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 4 |
另一种方法是使用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 |
代码的工作版本(来自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 4 5 6 7 8 9 10 |
对于像我这样的非极简主义者,有一个pecl扩展名叫做"intl"。我将它用于IDN转换,因为它比"IDN"扩展和其他一些N1类(如"intldateformatter")工作得更好。
好吧,我想说的是,"国际长途"分机有一个叫做"国际长途"的班,可以应付许多国际国家(例如,在沙特阿拉伯,星期天不是周末)。IntlCalendar有一个方法IntlCalendar::IsWeekend。也许你们可以试一试,我喜欢这些国际课程中的"它几乎适用于每个国家"这一事实。
编辑:不太确定,但是由于php 5.5.0,intl扩展与php(--enableintl)捆绑在一起。