php判断是不是周末,检查日期是否是周末PHP

这篇博客讨论了一个PHP函数,用于确定给定日期是否为周末。代码中存在一些错误,如不必要的字符和未正确返回布尔值。博主分享了修正后的代码,并提供了不同版本的PHP下的实现方式,包括使用`date('N')`检查日期所在的星期几。还提到了考虑时区问题以及使用`IntlCalendar`扩展进行国际化处理的可能性。
摘要由CSDN通过智能技术生成

此函数似乎只返回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');

您的true和false不应作为字符串引用。另外,您的代码应该给出一个解析错误,甚至根本不运行,因为您的if中有多余的}。

如果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);

}

如果使用php<5,那么使用return date('w', strtotime($date)) % 6 == 0会稍微短一些。

虽然这做了同样的事情,但我想说,对于阅读代码的人来说,显式检查更为明显。

这也是评论的目的。

嗯,有人说代码应该是可读的,没有很多注释。好的代码是可读的,不一定短。#清洁代码

代码越少,测试和维护的代码就越少。但如果它不可读,就很难测试和维护。是否必须有一个关于可读性的硬性和快速规则,或者它取决于经验?

另一种方法是使用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)中产生副作用。

接受你的赞成票,但我的书呆子警告你,当他们决定增加一个星期的一天,可能只是一个工作日:)

"这样您还可以指定时区"。根据本文,您也可以用其他方式指定时区。不过我用过你的解决方案

在这里:

function isweekend($year, $month, $day)

{

$time = mktime(0, 0, 0, $month, $day, $year);

$weekday = date('w', $time);

return ($weekday == 0 || $weekday == 6);

}

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

$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,您可能需要使用:

function isTodayWeekend() {

return in_array(date("l"), ["Saturday","Sunday"]);

}

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

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

function isThisDayAWeekend($date) {

$timestamp = strtotime($date);

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

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

else {return false; }

}

通过php 7.1测试,您还可以检查dow…。

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值