RE die Antwort von Željko Živković, Zeitzonen Deskriptoren wie 'Europa/London' funktionieren nur wenn der mySQL Admin hat dem System die Zeitzonentabellen hinzugefügt und diese aktualisiert.
Ansonsten sind Sie auf numerische Offsets wie '-4: 00' beschränkt. Glücklicherweise ist die PHP date ('P') Format bietet es (ab 5.1.3)
So in etwa eine App-Konfigurationsdatei können Sie
define('TZ', 'US/Pacific');
....
if (defined('TZ') && function_exists('date_default_timezone_set')) {
date_default_timezone_set(TZ);
$mdb2->exec("SET SESSION time_zone = " . $mdb2->quote(date('P')));
}
haben Das bedeutet, PHP und mySQL wird zustimmen, auf welcher Zeitzone Offset zu verwenden.
Verwenden Sie immer TIMESTAMP zum Speichern von Zeitwerten. Die Spalte wird tatsächlich als UNIX_TIME (Epoche) gespeichert, aber implizit vom aktuellen Zeitzonenoffset konvertiert, wenn sie geschrieben wird, und zurück beim Lesen.
Wenn Sie die Zeiten für Benutzer in anderen Zeitzonen anzeigen möchten, legen Sie anstelle einer globalen Definition() die oben angegebene Zeitzone fest.TIMESTAMP-Werte werden automatisch durch mySQL durch die Zeit umgewandelt werden, um Ihre App die Ergebnismenge sehen (was manchmal ein Problem sein kann, wenn Sie tatsächlich die ursprüngliche Zeitzone des Ereignisses müssen wissen, auch dann muss es in einer anderen Spalte sein)
und so weit wie, „warum speichern nicht nur alle Zeiten als int ist“, dass Sie die Fähigkeit Daten zu vergleichen verliert und zu validieren, und bedeutet, dass Sie immer bisher Darstellung auf der App-Ebene konvertieren (und ist auf hart die Augen, wenn Sie bei den Daten direkt suchen - schnell, was bei 1254369600 passierte)
+1 ich den unsteten Augen sehen bekommen, aber ich immer Unix/Epoche Zeit als unterzeichnet speichern int (will für Datum Mathe unterzeichnet). Keine Verwirrung und überlebt TZ-Verschiebungen der Regierung. – Xailor
+1, die Dinge einfach zu halten und normalisiert (= in UTC) auf Datenebene macht es schwierig, die Logik falsch zu bekommen. Gebietsschemaspezifische Konvertierungen sollten nur auf Anzeigeebene durchgeführt werden. – Kos