2009-12-05 5 views
8

Ich denke darüber nach, Daten bei der Benutzeranmeldung auf meiner Website zu speichern, aber ich weiß nicht, was die logischste Lösung ist.MySQL: Serverzeitzone oder Benutzerzeitzone beibehalten?

Zunächst habe ich Server Zeitzone zu verwenden, und dann mit Differenzoperationen zwischen Server-Computer-Datum und Benutzer-Computer-Datum zu verwalten, aber ich habe auch erwogen, es direkt mit Zeitzone und PHP-Klasse Datum zu ändern, so:

Meine Frage ist, was ist die beste Lösung, Server Zeitzone halten oder Benutzer Zeitzone?
und wenn ich Benutzer Zeitzone verwende, sollte ich den Namen der Zeitzone auch als in meinem Beispiel speichern?

Antwort

14

Ich würde empfehlen, Server-Zeitzone oder UTC zu verwenden, anstatt unterschiedliche Daten für jeden Benutzer zu speichern. Auf diese Weise wird Ihre Datenbank vollständig konsistent und Sie können einige Operationen wie Vergleiche durchführen, ohne für jeden Eintrag die Spalte user_timezone abrufen und die Konvertierung durchführen zu müssen (die nicht vollständig frei ist)

+1

UTC kann die meisten Dinge vereinfachen. Vor allem DST Schalter –

+4

+1, aber noch mehr für UTC über Server-Zeitzone. Was, wenn Sie den Server später verschieben oder mehrere Server auf der ganzen Welt haben möchten? –

+0

danke zu viel Hilfe, wissen Sie auch über eine UTC-Tabelle mit den jeweiligen Offests? so -1100, -1200, -1300 usw. – vitto

2

Verwenden Sie UTC. Es wird Ihnen viele Stunden der Frustration ersparen.

Benutzer lokale Zeit ist eine Frage der Präsentation - es ist viel einfacher zu/von lokalen Zeit für einen bestimmten Benutzer zu konvertieren, als die TZ der Datumsfelder jedes Datensatzes in der Datenbank zu verfolgen.

Auch Serverzeitzone bei Verwendung von verlockend sein kann, DST-Regeln auf sehr kurzfristig ändern können (siehe: Argentina DST 2009 - die Govt die Entscheidung getroffen hat, nicht DST zu verwenden, appx 1 Woche, bevor es sollte geschehen.) ; In einigen Fällen kann sich die Zeitzone selbst ändern (siehe Time in Indiana). Die UTC-Definition wird wahrscheinlich keine so drastischen Änderungen erfahren.

(Eine Geschichte über Serverzeit und Ortszeit: hatte einen Server an der Westküste der USA, zog an die Ostküste der USA; Apps nutzten Serverzeit; die Hölle brach los. Mit Virtualisierung ist es möglich, schnell und einfach zu bewegen Server zu verschiedenen Kontinenten.)