AM/PM 中的比较 PHP
AM/PM comparison in PHP
$star_time = "2015-05-15 09:30 PM";
$end_time = "2015-05-15 09:40 AM";
比较这两个 date/time 时显示 $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;
像您在此处所做的那样比较两个空白字符串,不会按照您的预期进行,也不是您比较两个日期的方式。因为你的 strings gets converted to an integer 如果你比较它们,所以如果你这样做:
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;
}
您的变量是字符串,您正在使用 >
运算符进行比较。
您需要将字符串转换为时间戳,然后进行比较。
strtotime() is your friend or the DateTime class.
$star_time = "2015-05-15 09:30 PM";
$end_time = "2015-05-15 09:40 AM";
比较这两个 date/time 时显示 $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;
像您在此处所做的那样比较两个空白字符串,不会按照您的预期进行,也不是您比较两个日期的方式。因为你的 strings gets converted to an integer 如果你比较它们,所以如果你这样做:
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;
}
您的变量是字符串,您正在使用 >
运算符进行比较。
您需要将字符串转换为时间戳,然后进行比较。
strtotime() is your friend or the DateTime class.