如何在PHP中将时间从AM/PM格式转换为24小时格式?

56

例如,我有一个以这种格式表示的时间:

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)); 

如何将上面的示例应用到我的情况中?谢谢。

9个回答

141

试试这个

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

或者你也可以像这样尝试

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

3
G - 小时的24小时制,不带前导零 - 0到23;H - 小时的24小时制,带前导零 - 00到23。 - Matthew

11
如果你使用Datetime格式,请参考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
不关乎问题。你的回答与问题相反,但对我有帮助。谢谢! - Parixit

9

PHP 5.3+ 解决方案。

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

输出: 13:00:00

用于格式化日期时非常好用。有关详细信息,请参见此答案


8

您可以使用以下方法将24小时制转换为12小时制:

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

相反地,也是如此:
echo date("H:i", strtotime($time));

4

2
$Hour1 = "09:00 am";
$Hour =  date("H:i", strtotime($Hour1));  

1
$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));

我建议您添加更多细节,说明您的方法解决了什么问题以及如何解决。如果在没有任何额外信息的情况下直接放置代码行,可能会比有帮助更加混乱,特别是当提问者不完全理解问题解决方式时。因此,添加简要描述总是一个好主意。 - Hugo Noro
您可以使用此代码将12小时制时间转换为24小时制时间。 - Saurabh Mani Pandey

0
$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));

-1
我们可以通过Carbon Laravel创建AM/PM。
Carbon::parse('your Value')->format('g:i A');

您的答案可以通过添加额外的支持信息来改进。请[编辑]以添加更多细节,例如引文或文献,以便他人可以确认您的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接