【问题标题】:How to convert the time from AM/PM to 24 hour format in PHP?如何在 PHP 中将时间从 AM/PM 转换为 24 小时格式?
【发布时间】:2013-06-02 01:19:34
【问题描述】:

例如,我有这样格式的时间:

eg. 

09:15 AM
04:25 PM
11:25 AM

如何将其转换为:

09:15
16:25
23:25

目前我的代码是:

$format_time = str_replace(" AM", "", $time, $count);
if ($count === 0){
    $format_time = strstr($time, ' PM', true);
    $format_time = ......
}

但是,似乎有一些更简单、更优雅的方法可以做到这一点?

$time = '23:45'; 
echo date('g:i a', strtotime($time)); 

如何在我的案例中拟合上述样本?谢谢。

【问题讨论】:

    标签: php string date


    【解决方案1】:

    试试这个

    echo date("G:i", strtotime($time));
    

    或者你也可以这样尝试

    echo date("H:i", strtotime("04:25 PM"));
    

    【讨论】:

    • G - 没有前导零的小时的 24 小时格式 - 0 到 23; H - 一个小时的 24 小时格式,带前导零 - 00 到 23
    【解决方案2】:

    如果您使用日期时间格式,请参阅http://php.net/manual/en/datetime.format.php

    你可以这样做:

    $date = new \DateTime();
    echo date_format($date, 'Y-m-d H:i:s');
    #output: 2012-03-24 17:45:12
    
    echo date_format($date, 'G:ia');
    #output: 05:45pm
    

    【讨论】:

    • 与问题无关。你的回答正好相反,但帮助了我。谢谢!
    【解决方案3】:

    您可以使用 24 到 12 小时:

    echo date("h:i", strtotime($time));
    

    反之亦然:

    echo date("H:i", strtotime($time));
    

    【讨论】:

      【解决方案4】:
      $time = '09:15 AM';
      
      $chunks = explode(':', $time);
      if (strpos( $time, 'AM') === false && $chunks[0] !== '12') {
          $chunks[0] = $chunks[0] + 12;
      } else if (strpos( $time, 'PM') === false && $chunks[0] == '12') {
          $chunks[0] = '00';
      }
      
      echo preg_replace('/\s[A-Z]+/s', '', implode(':', $chunks));
      

      【讨论】:

        【解决方案5】:

        PHP 5.3+ 解决方案。

        $new_time = DateTime::createFromFormat('h:i A', '01:00 PM');
        $time_24 = $new_time->format('H:i:s');
        

        输出:13:00:00

        在需要格式化日期时效果很好。详情请查看This答案。

        【讨论】:

          【解决方案6】:

          我们可以使用Carbon

           $time = '09:15 PM';
           $s=Carbon::parse($time);
           echo $military_time =$s->format('G:i');
          

          http://carbon.nesbot.com/docs/

          【讨论】:

            【解决方案7】:
            $Hour1 = "09:00 am";
            $Hour =  date("H:i", strtotime($Hour1));  
            

            【讨论】:

              【解决方案8】:
              $s = '07:05:45PM';
              $tarr = explode(':', $s);
              if(strpos( $s, 'AM') === false && $tarr[0] !== '12'){
                  $tarr[0] = $tarr[0] + 12;
              }elseif(strpos( $s, 'PM') === false && $tarr[0] == '12'){
                  $tarr[0] = '00';
              }
              echo preg_replace("/[^0-9 :]/", '', implode(':', $tarr));
              

              【讨论】:

              • 我建议您添加有关您的方法正在解决什么以及如何解决的其他详细信息。如果提出问题的人没有完全理解问题的解决方式,那么在没有任何附加信息的情况下转储代码行可能会变得更加混乱而不是有用。添加简短说明总是一个好主意
              • 您可以使用此代码将 12 小时时间转换为 24 小时时间。
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-08-15
              • 2013-06-10
              • 2018-01-21
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多