Ich habe gelesen, wie man das den ganzen Morgen macht, und der allgemeine Konsens ist: Speichern Sie Ihre Zeitstempel in UTC und berechnen Sie den Offset von dort.Anzeige von Zeitzonen ohne Verwendung von UTC
Wie auch die meisten Leute, behalte ich eine bestehende Codebasis und ich kann die Art, wie wir unsere Daten speichern, nicht ändern. Zumindest nicht im vorgegebenen Zeitrahmen.
Also meine Frage ist, kann ich sicher so etwas tun?
// this is my time zone
$timestamp = strtotime($timestampFromDatabase);
date_default_timezone_set('America/New York');
$tz = date_default_timezone_get();
// this is theoretically their timezone, which will eventually
// be taken from a session variable
date_default_timezone_set('Europe/Paris');
$offset = time() - $timestamp;
$timestamp -= $offset;
// now that I have the offset, display dates like this
date('r', $timestamp);
Einige Leute haben davon abgeraten, Datumsarithmetik zu machen, aber was mache ich hier falsch? Gibt es einen besseren Weg? Gibt es Fallen, auf die ich achten muss? Ich bin besonders daran interessiert, welche Art von Fehlern diese Methode erzeugen könnte, und wenn ja, wen werden sie beeinflussen?
Mein Chef ist die Art von Kerl, der sich nicht kümmert, wenn der Fehler nur 1% der Benutzerbasis betrifft.
Edit: Kann ich das klarer machen? Ich glaube nicht, dass ich zu viele davon habe. Jemand? Selbst ein vager Vorschlag oder ein Link wäre immens hilfreich.
Sie könnten auch diesen Ansatz verwenden, um Ihre Datenbank zu UTC in einer einmaligen Aufgabe für die zukünftige Verwendung zu aktualisieren. –
Das ist genial. Angenommen, ich verwende PHP 5.14, das dieses Objekt nicht enthält. Gibt es eine andere Art und Weise? –
Zend Framework hat eine php-basierte Lösung in Zend_Date, fragt aber nach PHP 5.2.4 als allgemeine Voraussetzung für das Framework. Es könnte funktionieren. Können Sie PHP upgraden oder neu kompilieren? –