【问题标题】:AM/PM comparison in PHP [duplicate]PHP中的AM / PM比较[重复]
【发布时间】:2015-07-28 12:39:45
【问题描述】:
$star_time = "2015-05-15 09:30 PM";
$end_time  = "2015-05-15 09:40 AM";

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

为什么比较忽略上午/下午?

谢谢

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

【问题讨论】:

  • 您使用哪个代码来比较这两个日期?
  • 将比较代码添加到我的问题中,谢谢
  • 你应该改用strtotime
  • 看起来你比较两个字符串,转换为日期对象见 Dave Chen 的评论

标签: php date datetime time comparison


【解决方案1】:

您的变量是字符串,您使用&gt; 运算符进行比较。

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

strtotime() 是你的朋友或DateTime class

【讨论】:

    【解决方案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 对象并比较两个日期的时间戳,例如

    <?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
    

    【讨论】:

    • 请解释反对意见,以便我改进答案。
    • 不知道是谁给你投了反对票,谢谢你的回答
    • @user4907354 不客气。 (还扩展了我的解释,如果将它们作为纯字符串进行比较,实际会发生什么)
    • @user4907354 我可以知道另一个答案中的哪个更好,您可以接受吗?
    • @Rizier123 您不需要比较时间戳。 DateTime 对象是直接可比较的,所以你可以做if($start &gt; $end){}3v4l.org/ZbJbZ,虽然这可能会在 PHP 上中断
    【解决方案3】:

    你应该比较整数而不是比较字符串

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 1970-01-01
      • 2011-03-25
      相关资源
      最近更新 更多