2009-03-23 8 views
5

Ich möchte die Zeit basierend auf der aktuellen Zeitzone des Benutzers anzeigen können. Ich werde die Zeiten im UTC-Format in meiner Datenbank speichern, möchte diese jedoch auf die Zeitzone des Clients normalisieren. Bisher scheint die Option am aussagekräftigsten zu sein, die Zeit des Clients zu erfassen und dann den Unterschied zwischen dieser und der aktuellen UTC zu bestimmen und dieses Delta zu verwenden, um Zeiten beim Rendern zu normalisieren. Ich würde gerne wissen, ob es noch direktere Optionen gibt, um eine UTC-Zeit zu erkennen und zu normalisieren, die der Maschine des anfragenden Kunden entspricht.ASP.NET-Client-Zeit

+0

Woher wissen Sie, dass der Kunde seine Zeit genau eingestellt hat? Du kannst nicht gewinnen. –

+0

Ich dachte, dass ... aber ich werde es als einen Gewinn betrachten, wenn ich es nur auf ihre Zeit (richtig oder falsch) gründen kann :). – JPrescottSanders

Antwort

8

Ich würde das Javascript dateObject.getTimezoneOffset() verwenden. Auch wenn ihre Zeit nicht genau festgelegt ist, hoffentlich haben sie ihre Zeitzone einstellen:

http://www.w3schools.com/jsref/jsref_getTimezoneOffset.asp

Sie diesen Wert verwenden können, um ein zwischen dem Server des Zeitversatzes zu berechnen und die Zeit des Kunden. (wie Jason in einem Kommentar unten hilfreich hervorhob)

+0

Ihre Lösung ist richtig. Ich musste dieses Problem für unsere Web-App vor ca. 6 Monaten lösen und kam zu dem gleichen Schluss: Verwenden Sie die Serverzeit korrigiert um die Client-Zeitzone. –

2

Zusätzlich oder anstelle von getTimezoneOffset sollten Sie in Betracht ziehen, dem Benutzer zu erlauben, bevorzugte Zeitzone in seinem Profil anzugeben. Zum Beispiel kann ein Benutzer in einer Zeitzone besuchen, mag es jedoch bevorzugen, die Zeit in seiner Heimat-Zeitzone angezeigt zu sehen.

Auch wenn dies so einfach wäre wie das Aufrufen einer JavaScript-Funktion, dann müssten Websites niemals nach Ihrer Zeitzone fragen.

0

Ein viel besserer Ansatz besteht darin, pro Benutzer die genaue Zeitzone zu speichern, in der sich der Benutzer befindet (und optional), ob er die Sommerzeit einhält (sofern diese für seine Zeitzone gilt) , füllen Sie automatisch die DST Informationen (basierend auf der Zeitzone), wenn Sie wollten.

Sie müssten diesen Teil der Anmeldung oder möglicherweise in ihren "Optionen" machen.