2017-01-04 3 views
0

Ich habe eine Zeit als 5:4 pm und ich möchte die Zeit von AM/PM zu 24 Stunden-Format in PHP konvertieren, ich versuche als date('H:i',strtotime('5:4 pm')), aber das funktioniert nicht und das Ergebnis ist 16:00 in das Ereignis, dass es 17:04 sein sollte. was mache ich?Konvertieren von Zeit von AM/PM zu 24 Stunden

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

Ich kann diese Zeit ändern.

+0

versuchen echo date ('H: i', strtotime ('05: 04.00 ')); – rahulsm

+0

also ist es in Variable? bedeutet deine aktuelle Zeit? – rahulsm

+0

Ja das ist richtig –

Antwort

0

die Zeit-String-Format gleiche sein wird vorausgesetzt -

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

Ausgabe

17:04 pm 
0

Try AM/PM

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

{EDIT}

Ersetzen Uhr mit PM mit str_replace

echo date('H:i', strtotime(str_replace("pm","PM",'5:04 PM'))) 
+0

Ich kann diese Zeit nicht ändern. . –

0

Sie sollten 5.04 passieren statt 5 zu nutzen: 4 Uhr nachmittags scheint der Parameter 2 Ziffern für das Minutenformat zu erwarten.

Arbeitsbeispiel: http://sandbox.onlinephpfunctions.com/code/ecf968c844da50e8a9eec2dc85656f49d7d20dee

+0

Ich kann diese Zeit nicht ändern. –

+0

Es geht um Formatierung, Sie müssen nicht die "Zeit" selbst ändern. Sie brauchen nur eine Funktion, um Ihre Datumszeit zu formatieren, damit strtotime() sie gut interpretiert. – avilac

0

können Sie versuchen, diese

echo date("H:i", strtotime("05:04 PM")); 
+0

Ich kann diese Zeit nicht ändern. –

1

Ich empfehle PHP OOP Art und Weise, wie sie immer besser als jede prozedurale Art und Weise sind (wie mit strtotime):

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

Bitte beachten Sie, dass Sie Folgendes angeben müssen: 5:04 pm, Sie CAN NOT Verwenden Sie 5: 4 Uhr.

Grund ist, dass kein Datumsformat für Minuten ohne führende Null existiert.

als Referenz sehen: http://php.net/manual/en/datetime.createfromformat.php

Wenn Sie Zeit in diesem Format haben müssen, dann werden Sie es manipulieren müssen, nachdem Sie Ihre Zeit erhalten wie folgt:

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

Ich hoffe, dass es hilft

0

Hier ist der Code,

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

reinen Datum wird nicht funktionieren, so bin ich explodiert es, wie es ist Sonderfall

Ich hoffe, dass dies funktionieren wird. Danke :)

-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 

Danke, hoffe das hilft.

+0

dieser Code konvertiert nicht eine bestimmte Zeit von 12 bis 24h-Format, es zeigt die aktuelle Uhrzeit ... –

+0

ja, das war meine Absicht –

+0

so ist dies keine Antwort auf die ursprüngliche Frage ... –

Verwandte Themen