PHP:如何比较时间字符串和日期('H:i')?

sri*_*_wb 8 php comparison datetime

我有时间保存在数据库中,如下午7:30作为varchar字段.我想检查这个时间是否大于现在的时间.

我将DB时间字符串转换为'19:30',现在我想做这样的事情:

$my_time = '19:30';

if($my_time  > date('H:i'))
{
    do something ...
}
Run Code Online (Sandbox Code Playgroud)

问题是如果$ my_time是非空字符串,则上面将返回true.

strtotime($my_time)也没有帮助.

strtotime('H:i',$my_time) 00:00.

这样做(int)date('H:i')会给1700年的实际时间是17:09,因此删除冒号,然后比较不会太工作....

在此上下文中,更改数据库时间数据是不可能的.

请帮助.如果我说错了一些事实,请纠正我.

Wou*_*r J 11

你可以用这个:

$myTime = '19:30';
if (date('H:i') == date('H:i', strtotime($myTime))) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

  • 很多时间过去了,但是直接比较两个字符串是不是一样的?由于`date()`返回一个字符串,它正如:`if(date('H:i')== '19:30')`不是吗?,这与OP提到的相同试.那是因为`date('H:i',strtotime($ myTime))`将原来的$ myTime值作为字符串返回!!! 所以它就像放置`$ myTime`而不是'date('H:i',strtotime($ myTime))`那么一样.那么重点是什么?我真的不明白.我错过了什么?为什么OP表示的`if($ my_time> date('H:i'))可能不起作用?因为它对我有用. (6认同)
  • 问题涉及如何比较一是否大于二。不仅仅是相等比较。 (2认同)

gio*_*gio 5

您可以构造一个新的DateTime对象,将时间设置为随机日期。比比较这两个对象。例如:

$my_time = new DateTime('January 1th 1970 19:30');
$comparable_time = new DateTime('January 1th 1970 '. date('H:i'));
if($my_time < $comparable_time) {
    // do something
} else {
    // do something else
}
Run Code Online (Sandbox Code Playgroud)

请注意变更日志;

Version 5.2.2    DateTime object comparison with the comparison operators changed to work as expected. Previously, all DateTime objects were considered equal (using ==).
Run Code Online (Sandbox Code Playgroud)