2013-06-06 11 views
29

Na przykład mam czasu w tym formacieJak przekonwertować czas z AM/PM na format 24-godzinny w PHP?

eg. 

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

Jak przekonwertować go do

09:15 
16:25 
23:25 

Obecnie mój kod jest:

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

Wydaje się jednak, istnieją pewne łatwiej i elegancko to zrobić?

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

Jak zmieścić powyższą próbkę w moim przypadku? Dzięki

Odpowiedz

65

spróbować z tym

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

lub można spróbować w ten sposób również

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

Jeśli używasz formatu Datetime zobaczyć http://php.net/manual/en/datetime.format.php

Można to zrobić:

$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 
+1

Nieistotne kwestionować. Twoja odpowiedź jest wprost przeciwna, ale pomogła mi. Dzięki! – Parixit

6

Można to wykorzystać w ciągu 24 godzin do 12 godzin:

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

a dla odwrotnie:

echo date("H:i", strtotime($time)); 
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)); 
0

PHP rozwiązanie 5.3+.

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

Outpit: 13:00:00

Działa świetnie z datami formatowania. Sprawdź odpowiedź This.

Powiązane problemy