PHP DateTime Timezones - Konstruktor vs Setter-Methode
Bei Verwendung von PHPDateTime
class und versuche ein @ zu setzDateTimeZone
Ich erhalte unterschiedliche Ergebnisse, je nachdem, wie ich es eingestellt habe: mit demDateTime::__construct
oder mit demDateTime::setTimezone
Methode
Hier ist ein Beispiel
$date = '2014-08-01'
$dateTimeOne = new DateTime($date, new DateTimeZone('America/Los_Angeles'));
echo $dateTimeOne->format('Y-m-d\TH:i:sP');
// 2014-08-01T00:00:00-07:00
$dateTimeTwo = new DateTime($date);
$dateTimeTwo->setTimezone(new DateTimeZone('America/Los_Angeles'));
echo $dateTimeTwo->format('Y-m-d\TH:i:sP');
// 2014-07-31T17:00:00-07:00
Siehe auchhttp: //3v4l.org/LrZf
Ich habe mich umgesehen und keine angemessene Erklärung gefunden, die dieses bestimmte Verhalten außer dem folgenden Kommentar im @ behandelphp docs: datetime.settimezone und das Buchphp | architect's Guide zur Datums- und Zeitprogrammierung: Umgang mit Zeitzonen - DateTimeZone.
Der Kommentar besagt, dass dasDateTime::setTimezone
ie @ -Methode ändert die Zeitzone für einen bestimmten Zeitpunkt (einen Zeitstempel), der Unix-Zeitstempel bleibt jedoch unverändert.
n der anderen Hand dasDateTime::__construct
er @ DateTimeZone-Parameter wird verwendet, um "die aktuelle Standard-Zeitzone mit einer benutzerdefinierten zu überschreiben".Kapitel 3: Umgang mit Zeitzonen - DateTimeZone.
Andere als diese gibt es nicht viel zu dem Thema (was ich finden konnte).
Das ist, was ich gerne wissen würde:
Weitere Erläuterungen zu diesen beiden Möglichkeiten zum Festlegen der ZeitzonenWann soll ich das @ benutzDateTime::__construct
um die Zeitzone einzustellenWann soll ich das @ benutzDateTime::setTimezone
um die Zeitzone einzustellen Ein anschauliches Beispiel für die Verwendung von einem gegen das andere oder wie man sie zusammen verwendet