Von einem DateTime-Objekt bin ich interessiert, die Zeit in verschiedenen Zeitzonen zu bekommen. Wie in dem DateTime::setTimezone doc, das funktioniert ziemlich gut, wenn das Datetime-Objekt aus einer Zeichenfolge erstellt wird:PHP DateTime-Objekt - Zeitstempel und Zeitzonen Konflikt
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";
$date->setTimezone(new DateTimeZone('UTC'));
echo $date->format('Y-m-d H:i:sP') . "\n";
echo $date->getTimestamp() . "\n";
Die obigen Beispiele folgende Ausgabe:
2000-01-01 00: 00: 00 + 12: 00
2000-01-01 01: 45: 00 + 13: 45
1999-12-31 12: 00: 00 + 00: 00
Jetzt ist der interessante Teil: Wenn wir holen up unser Timestamp, und initiieren Sie unser DateTime-Objekt damit gemäß den manuellen Anweisungen.
$date2 = new DateTime('@946641600');
$date2->setTimezone(new DateTimeZone('Pacific/Nauru'));
echo $date2->format('Y-m-d H:i:sP') . "\n";
$date2->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date2->format('Y-m-d H:i:sP') . "\n";
$date2->setTimezone(new DateTimeZone('UTC'));
echo $date2->format('Y-m-d H:i:sP') . "\n";
echo $date2->getTimestamp() . "\n";
Und hier erhalten wir: // [Bearbeiten] humm ... Leider ist der Ausgang ist falsch ...
1999-12-31 12: 00: 00 + 00: 00
1999- 12-31 Dezember: 00: 00 + 00: 00
1999-12-31 12: 00: 00 + 00: 00
UTC forever !!! Wir können die Zeitzone nicht mehr ändern!?!
Ist es PHP oder bin ich es? Version 5.3.15
Soll nicht eine Zeitzone bei Instanziierung mit dem Zeitstempel angegeben werden? –
Ich bekomme ein anderes Ergebnis hier http://codepad.viper-7.com/zAv8dz – Baba
Es funktioniert gut auf Version 5.3.15 ....... – Baba