PHP中的AM/PM比较


$star_time = "2015-05-15 09:30 PM";
$end_time  = "2015-05-15 09:40 AM";

当比较这两个日期/时间时,它显示$end_time大于$star_time,而$star_time实际上更大,因为时间在晚上,而$end_time在早上!!

为什么比较忽略AM/PM ?

谢谢

if($star_time > $end_time)
echo $star_time .">". $end_time;
else
echo $star_time ."<". $end_time;

您的变量是字符串,您正在使用>运算符进行比较。

您需要将字符串转换为时间戳,然后进行比较。

strtotime()是你的朋友或DateTime类

像你在这里做的那样比较两个空白字符串,不会做你期望它做的事情,也不是你比较两个日期的方式。因为如果你比较它们,你的字符串会被转换成整数,所以如果你这样做:

echo $star_time + 0;  //2015
echo $end_time + 0;   //2015

您将看到您的字符串被转换为哪个整数。这就是一切,直到一个非数值(在你的例子中是破折号:-)。

表示你的情况是这样的:

if(2015 > 2015)

2015年不比2015年大。所以你看:

1。这不是你想要的
2. 这也不是你比较日期的方式,因为你可以看到,日期没有得到正确的比较

创建一个DateTime对象,比较两个日期的时间戳,例如

<?php
    $star_time = "2015-05-15 09:30 PM";
    $end_time  = "2015-05-15 09:40 AM";
    $start = new DateTime($star_time);
    $end = new DateTime($end_time);
    if($start->getTimestamp() > $end->getTimestamp())
        echo $star_time .">". $end_time;
    else
        echo $star_time ."<". $end_time;
?>
输出:

2015-05-15 09:30 PM > 2015-05-15 09:40 AM

不应该比较字符串,而应该比较整数

if (strtotime($star_time) > strtotime($end_time)) {
   echo $star_time .">". $end_time;
}
else {
   echo $star_time ."<". $end_time;
}

相关内容

  • 没有找到相关文章

最新更新