如何在PHP中实现基于星期与当日时间段的条件判断
如何在PHP中整合星期与时间段的条件判断逻辑
嘿,你已经搞定了星期判断的基础代码,现在要加入时间段判断其实很简单,不过先给你提个原代码里的小坑:你写的$currentday == Monday里的Monday没加单/双引号,PHP会把它当成未定义常量处理,运行时会抛出警告,得改成'Monday'这种字符串形式才行。
接下来给你两种可靠的方法来整合时间段判断:
方法1:直接比较时间字符串(简单直观)
这种方法适合判断同一天内的时间段,直接用date('H:i')获取当前的小时:分钟格式(比如14:30),然后和目标时间段的字符串做比较:
<?php date_default_timezone_set('Australia/Perth'); $script_tz = date_default_timezone_get(); $currentday = date('l'); // 获取当前时间的小时:分钟格式 $current_time = date('H:i'); if ($currentday == 'Monday') { // 判断是否处于14:00-16:00之间 if ($current_time >= '14:00' && $current_time <= '16:00') { echo "周一且处于14:00-16:00,执行指定操作"; // 在这里写入你的具体操作代码,比如调用函数、执行数据库操作等 } else { echo "周一但不在目标时间段"; } } elseif ($currentday == 'Tuesday') { // 周二的逻辑,同理可添加时间段判断 echo "Tuesday"; } elseif ($currentday == 'Wednesday') { echo "Wednesday"; } elseif ($currentday == 'Thursday') { echo "Thursday"; } elseif ($currentday == 'Friday') { echo "Friday"; } elseif ($currentday == 'Saturday') { echo "Saturday"; } elseif ($currentday == 'Sunday') { echo "Sunday"; } ?>
方法2:使用时间戳比较(更精准,支持跨天场景)
如果之后需要处理跨天的时间段(比如23:00到次日01:00),或者担心字符串比较的边界问题,用时间戳会更可靠。我们可以把当天的目标时间段转换成时间戳,再和当前时间戳对比:
<?php date_default_timezone_set('Australia/Perth'); $script_tz = date_default_timezone_get(); $currentday = date('l'); // 获取当前时间戳 $current_timestamp = time(); // 获取当天0点的时间戳 $today_start = strtotime('today'); // 计算当天14:00和16:00的时间戳(1小时=3600秒) $target_start = $today_start + 14 * 3600; $target_end = $today_start + 16 * 3600; if ($currentday == 'Monday') { if ($current_timestamp >= $target_start && $current_timestamp <= $target_end) { echo "周一且处于14:00-16:00,执行指定操作"; // 你的操作代码 } else { echo "周一但不在目标时间段"; } } // 其他星期的判断逻辑可参照上面的写法扩展 ?>
总结一下步骤
- 先修正原代码中字符串未加引号的错误,避免运行警告
- 选择适合的时间获取方式(字符串或时间戳)
- 在对应星期的判断分支内,加入时间段的条件判断
- 在符合条件的分支里写入你要执行的操作
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

