2017-12-20 19 views
-1

Ich versuche zu teilen/konvertieren zwei 24-Stunden-Zeiten zu einzelnen 12-Stunden-Zeiten, aber PHP scheint entweder 12 Minuten oder 1min auf die Ausgabe hinzufügen, und ich kann Ermitteln Sie die Ursache nicht, nachdem Sie Zeitzonen- und Systemzeitkorrekturen versucht haben. Könnten Sie mich bitte erziehen?PHP DateTime :: createFromFormat Hinzufügen von 12 Minuten, wenn das Ausgabeformat ist g: ma

Eingang:

<?php $timeSlot = ["10:00","22:00"]; 
    echo DateTime::createFromFormat('H:i',$timeSlot[0])->format('H:i'); 
    echo " - "; 
    echo DateTime::createFromFormat('H:i',$timeSlot[1])->format('H:i'); 
    echo " Fine.<br>"; 
    echo DateTime::createFromFormat('H:i',$timeSlot[0])->format('g:ma'); 
    echo " - "; 
    echo DateTime::createFromFormat('H:i',$timeSlot[1],new DateTimeZone('Australia/Sydney'))->format('g:ma'); 
    echo " Why 12 extra minutes?<br>"; 
    echo DateTime::createFromFormat('!H:i',$timeSlot[0])->format('g:ma'); 
    echo " - "; 
    echo DateTime::createFromFormat('!H:i',$timeSlot[1],new DateTimeZone('Australia/Sydney'))->format('g:ma'); 
    echo " Why one extra minute?"; ?> 

Ausgang:

10:00 - 22:00 Fine. 
10:12am - 10:12pm Why 12 extra minutes? 
10:01am - 10:01pm Why one extra minute? 
+0

Man, das eine Fangfrage war. Wolltest du uns zum Narren halten oder wer hat dir diesen Code gegeben, um dich zu täuschen? ;) –

+0

Ja, das war eine dumme Frage, verdammte Formatcodes haben mich wieder erwischt. Es tut uns leid. –

Antwort

3

Sie sind nicht zusätzliche Minuten zu bekommen. Sie zeigen die Nummer für den Monat an (12 für Dezember). Ändern Sie das Format zu g:ia

Wenn Sie !H:i haben Sie setzen den Monat, den Tag und das Jahr auf der Unix-Epoche, die 1. JANUAR wäre, 1970. Daher Sie sehen eine 01 für den Monat Januar in diesen Einstellungen.

Siehe Tabelle hier: http://php.net/manual/en/function.date.php

Verwandte Themen