$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;
}