2017-05-30 8 views
1

Wie kann man Zeiten ändern, die mit einer Zeitzone (zB 14:00:00+02:00) zu einer lokalen Zeit bereitgestellt werden (das Ergebnis wäre 16:00:00), wenn die Daten nicht angegeben sind. Ich habe es mit der DateTime Klasse versucht. Aber da ich nur mal Handhabung, keine Termine, muss es nicht immer die richtigen Ergebnisse liefern:Formatieren Sie eine Zeit mit Zeitzone auf lokale Zeit in PHP

$time = '14:00:00+02:00'; 
$datetime = new DateTime($date); 
$result = $datetime->format("H:i:s"); 
+0

$ datetime = new Datetime ($ Datum); sollte $ datetime = new DateTime ($ time) sein; . Recht? – Stanly

Antwort

0

können Sie verwenden setTimezone() Funktion

$time = '14:00:00+02:00'; 
$datetime = new DateTime($time); 
$result = $datetime->format("H:i:s"); 
echo $result; 
echo '<br>'; 
$datetime->setTimezone(new DateTimeZone('Your_local_timezone')); // ex: UTC (+00h00) or Europe/Moscow (+4h00) 
$result = $datetime->format("H:i:s"); 
echo $result; 
+0

Ich habe das versucht, aber es funktioniert nur, wenn das Suffix ist + 01: 00 '\t '$ date = '14: 00: 00 + 01: 00'; \t $ Zeitzone; $ datetime = neue DateTime ($ date); $ target_timezone = new DateTimeZone ('Europa/Brüssel'); $ datetime-> setTimezone ($ target_timezone); $ result = $ datetime-> Format ("H: i: s"); \t echo $ result; 'gibt 15:00:00 aber mit der +02: 00 gibt es 14:00:00 – JonVH

+0

Sie können zum Beispiel 'Europa/Moskau' Zeitzone (+04: 00) verwenden: $ datetime- > setTimezone (neue DateTimeZone ('Europe/Moscow')); –

0

Verwenden des Datetime setTimezone Methode. Es wird automatisch die Zeit ändern, um der Zeitzone zu entsprechen.

$date = new DateTo,e("2017-02-02 10:00:00", new DateTimeZone("+0200")); 
$date->setTimezone(new DateTimeZone("-0200")); 
var_dump($date->format("H:i:s")); 

Will Ausgang der folgende:

string '06:00:00' (length=8) 
0
$utc = new DateTimeZone("UTC"); 
$zone = new DateTimeZone("YOUR_TIME_ZONE"); 
$date = new DateTime("14:00:00+02:00", $utc); 
$date->setTimezone($zone); 
echo $date->format('Y-m-d H:i:s'); 
0

Sie sollten spezifische Zeitzone, und sagen DateTime Zeitzonen zum Beispiel zu verwenden:

$time = '14:00:00+02:00'; 
$datetime = DateTime::createFromFormat('H:i:s+T', $time); 
$datetime->setTimezone(new DateTimeZone('Europe/Warsaw')); 
$result = $datetime->format("H:i:s"); 

echo($result); 

Verwendung +T in format pattern um zu sagen, dass php das Datum eine Zeitzone enthält, in der nächsten ste Sie sollten Ihre Zeitzone mit setTimezone einstellen. Zum Beispiel setzen i 'Europe/Warsaw' aber nichts passieren Coz +02: 00 CEST das ist gleich 'Europe/Warsaw'

Andere Weise +02:00 Namensgebung Zeitzone verändert sich hier ein Beispiel:

$time = '14:00:00 (UTC)'; 
$datetime = new DateTime($time); 

$datetime->setTimezone(new DateTimeZone('Europe/Warsaw')); 
$result = $datetime->format("H:i:s"); 

echo($result); 
Verwandte Themen