$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;
答案 0 :(得分:2)
比较这里的两个空白字符串,不会做你期望它做的事情,而不是你比较两个日期的方式。因为你的strings gets converted to an integer比较它们,所以如果你这样做:
echo $star_time + 0; //2015
echo $end_time + 0; //2015
您将看到您的字符串转换为哪个整数。这只是一切,直到非数值(在你的情况下是破折号:-
)。
表示您的情况如下:
if(2015 > 2015)
2015年并不比2015年大。所以你看:
1。这并不是你想要的 2.这也不是你比较日期的方式,因为你可以看到日期没有被正确比较
只需创建一个DateTime
对象并比较两个日期的时间戳,.e.g
<?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
答案 1 :(得分:2)
答案 2 :(得分:0)
您应该比较整数
,而不是比较字符串if (strtotime($star_time) > strtotime($end_time)) {
echo $star_time .">". $end_time;
}
else {
echo $star_time ."<". $end_time;
}