将时间从上午/下午转换为24小时

时间:2017-01-04 08:58:51

标签: php date time

我的时间为5:4 pm,我想在PHP中将时间从上午/下午转换为24小时格式,我尝试date('H:i',strtotime('5:4 pm')),但这不起作用,结果是{{1如果它应该是16:00。我该怎么办?

DEMO: http://sandbox.onlinephpfunctions.com/code/bfd524f65ea4fa3031e55c9879aab711f31e1b37

我无法改变这段时间。

7 个答案:

答案 0 :(得分:1)

我推荐PHP OOP方式,因为它们总是比任何程序方式更好(比如使用strtotime):

$time = '5:04 pm';
$date = DateTime::createFromFormat('g:i a', $time);
echo $date->format('H:i');//17:04

请注意,您需要提供:下午5:04 不能使用 5:4 pm

原因是没有前导零的分钟数不存在日期格式。

供参考,请参阅: http://php.net/manual/en/datetime.createfromformat.php

如果你必须有那种格式的时间,那么你将需要在收到你的时间之后操纵它,如下所示:

$time = '5:4 pm';//works for formats -> '5:4 pm' gives 17:04,'5:40 pm' gives 17:40
$time2 = str_replace(' ',':',$time);
$time3 = explode(':',$time2);
if(((int)$time3[1])<10)//check if minutes as over 10 or under 10 and change $time accordingly
    $time = $time3[0].':0'.$time3[1].' '.$time3[2];
else
    $time = $time3[0].':'.$time3[1].' '.$time3[2];

$date = DateTime::createFromFormat('g:i a', $time);
echo $date->format('H:i');

我希望它有所帮助

答案 1 :(得分:0)

尝试将AM / PM资本化

date('H:i', strtotime('5:04 PM'))

<强> {EDIT}

使用str_replace

将PM替换为PM
echo date('H:i', strtotime(str_replace("pm","PM",'5:04 PM')))

答案 2 :(得分:0)

你应该通过下午5:04而不是下午5:4,参数似乎需要2分钟的分钟格式。

工作示例:http://sandbox.onlinephpfunctions.com/code/ecf968c844da50e8a9eec2dc85656f49d7d20dee

答案 3 :(得分:0)

你可以试试这个

<section class="container">
  <div class="flexgrid">
    <figure class="col">

      <!-- change <p> to <div>  to avoid newline -->
      <div>PLAY</div>
      <center>
      <img src="img/m1.jpg" />
       </center>
    </figure>
    <figure class="col">
      <div>LEARN</div>
      <center>
      <img src="img/m2.jpg" />
       </center>
    </figure>
    <figure class="col">
      <div>HELP</div>
      <center>
      <img src="img/m3.jpg" />
        </center>
    </figure>
  </div>
</section>

答案 4 :(得分:0)

这是代码,

$time = '5:4 pm';
$arr = explode(" ",$time);  
$arr1 = explode(":",$arr[0]);
foreach($arr1 as $k =>  $val){
    $arr1[$k] = sprintf("%02d", $val);    
}
$str = implode(":", $arr1)." ".$arr[1];
echo date('H:i',strtotime($str));
  

纯粹的约会不会起作用,所以我正在爆炸它,因为它是特殊情况

我希望这会奏效。 谢谢:))

答案 5 :(得分:0)

假设时间字符串格式相同 -

$time = explode(' ', '5:4 pm');
$temp = date_parse($time[0]);
$temp['minute'] = str_pad($temp['minute'], 2, '0', STR_PAD_LEFT);
echo date('H:i a', strtotime($temp['hour'] . ':' . $temp['minute'] . ' ' . $time[1]));

<强>输出

17:04 pm

答案 6 :(得分:-1)

// 24 hours format
$date = date("H:i a",time());
// just pass time() function instead of strtotime()

echo $date;

// output
// 17:04 pm
// to run a test, do reset your system time back or forward to 5:4 pm

谢谢,希望这有帮助。