如何在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 条件下使用 &gt;= , &lt;=,那么我们将得到准确的答案..您的回答非常有帮助,约翰... 对于您检查的时间在第二天结束的情况(例如,@oucil 提到的“如果晚上 10 点大于晚上 8 点且小于凌晨 2 点”)——有一个有用的函数可以处理所有案例here.【参考方案2】:

我建议您首先使用 substr 函数和 intval 将字符串“转换”为整数。

经过这一步,您应该能够简单地比较时间。

( 请注意,您应该使用 18:00 而不是 6:00 PM,这会更容易处理,因此您可以使用 substr“检测”时间是上午还是下午,只需将“12”添加到数)

我很确定有更优雅的方法可以做到这一点,但这应该只是给你一个基本的想法,为非高级 php 开发人员提供一种简单的方法。

希望对你有帮助

【讨论】:

strtotime() 会比 substr() 好

以上是关于如何在PHP中检查时间是不是在两次之间[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如果在两次之间,如何从另一个表返回值?

无论日期如何,检查给定时间是不是介于两次之间

在PHP中获取两次之间的时间差[重复]

如何在php中搜索2次之间的查询

如何检测熊猫数据框在两列范围之间是不是有重复项?

如何在php中检查url是不是存在