2017-04-19 2 views
0

Ich versuche, eine Zeichenfolge von Uhrzeit zu Datetime mit Meridian zu konvertieren, aber ich habe falsche Datetime.
Hier ist mein Code:php datetime und zone

$timeZone = 'Europe/Warsaw'; 
date_default_timezone_set($timeZone); 
$millis = 1540399680000; 
$seconds = $millis/1000; 
$date = date("d/m/Y H:i:s a", $seconds); 
debug($date); 
$timeZone = new DateTimeZone('Europe/Warsaw'); 
$formato = "d/m/Y H:i:s a"; 
$fecha = DateTime::createFromFormat($formato, $date, $timeZone); 
debug($fecha); 
debug($fecha->format('Y')); 
debug($fecha->format('a')); 

Ergebnis für debug ($ date)

24/10/2018 18:48:00 pm 

Ergebnis für debug ($ fecha)

object(DateTime) { 
    date => '2018-10-25 06:48:00.000000' 
    timezone_type => (int) 3 
    timezone => 'Europe/Warsaw' 
} 

was ich erwarte bei Debug ist ($ fecha);

+1

Was erwarten Sie zu erhalten? – alistaircol

+0

'$ fecha' ist ein Datetime-Objekt, das Sie nach Ihren Bedürfnissen formatieren können. – tarikul05

+0

'Debug ($ fecha-> Format ('d/m/Y H: ich: s a'));' es wird Ihre gewünschten Lösungen geben – tarikul05

Antwort

-1

Basierend auf der Dokumentation (http://php.net/manual/en/datetime.createfromformat.php) gibt die Funktion DateTime createFormFormat ein DateTime-Objekt zurück. Wenn Sie eine direkte Ausgabe erhalten möchten, folgen Sie diesem Code.

$timeZone = 'Europe/Warsaw'; 
date_default_timezone_set($timeZone); 
$millis = 1540399680000; 
$seconds = $millis/1000; 
$date = date("d/m/Y H:i:s a", $seconds); 
debug($date); 
$timeZone = new DateTimeZone('Europe/Warsaw'); 
$formato = "d/m/Y H:i:s a"; 
// instead of this 
//$fecha = DateTime::createFromFormat($formato, $date, $timeZone); 
// add ->format in the end 
$fecha = DateTime::createFromFormat($formato, $date, $timeZone)->format($formato); 
debug($fecha); 
0

Haben Sie versucht, CakeTime::format() zu verwenden? ZB:

$date = CakeTime::format($seconds, 'd/m/Y H:i:s a', false, 'Europe/Warsaw'); 
debug($date);