如何在PHP中检查时间是不是在两次之间[重复]
Posted
技术标签:
【中文标题】如何在PHP中检查时间是不是在两次之间[重复]【英文标题】:How to check if time is between two times in PHP [duplicate]如何在PHP中检查时间是否在两次之间[重复] 【发布时间】:2013-04-01 10:28:19 【问题描述】:我有以下三个字符串(当前时间、日落和日出),如何找到当前时间是否在日出和日落之间?
$current_time = "10:59 pm";
$sunrise = "5:42 am";
$sunset = "6:26 pm";
【问题讨论】:
如果上述方法对您没有帮助,请查看 DateTime 类,OP。 我认为否决这个问题是不公平的。链接的其他答案严格处理日期。我认为只要有任何问题达到-1,人们就会“顺其自然”。 @WebnetMobile 我认为比较日期和比较白天有点不同。 哇?为什么我得到了反对票?如果你不能自己做某事,这个网站不是应该问问题吗? 因为你没有表现出你自己的任何努力 【参考方案1】:$current_time = "4:59 pm";
$sunrise = "5:42 am";
$sunset = "6:26 pm";
$date1 = DateTime::createFromFormat('h:i a', $current_time);
$date2 = DateTime::createFromFormat('h:i a', $sunrise);
$date3 = DateTime::createFromFormat('h:i a', $sunset);
if ($date1 > $date2 && $date1 < $date3)
echo 'here';
See it in action
参考
DateTime【讨论】:
注意他没有处理日期值,你确定这仅适用于白天吗?我认为 DateTime 函数正在处理核心函数中的 unix 时间戳。如果 date3 = day 15 - 6 pm ,这将是 false = day 17 - 4 pm 如果我错了请指正,我没有尝试这个功能 这可能适用于所有时间段都在同一天的简单情况,但如果您要检查晚上 10 点是否大于晚上 8 点且小于凌晨 2 点,这将失败。 小编辑(如果当前时间没有手动给出)。$current_time = date('h:i:s a');
如果我们在 if 条件下使用 >= , <=
,那么我们将得到准确的答案..您的回答非常有帮助,约翰...
对于您检查的时间在第二天结束的情况(例如,@oucil 提到的“如果晚上 10 点大于晚上 8 点且小于凌晨 2 点”)——有一个有用的函数可以处理所有案例here.【参考方案2】:
我建议您首先使用 substr 函数和 intval 将字符串“转换”为整数。
经过这一步,您应该能够简单地比较时间。
( 请注意,您应该使用 18:00 而不是 6:00 PM,这会更容易处理,因此您可以使用 substr“检测”时间是上午还是下午,只需将“12”添加到数)
我很确定有更优雅的方法可以做到这一点,但这应该只是给你一个基本的想法,为非高级 php 开发人员提供一种简单的方法。
希望对你有帮助
【讨论】:
strtotime() 会比 substr() 好以上是关于如何在PHP中检查时间是不是在两次之间[重复]的主要内容,如果未能解决你的问题,请参考以下文章