2009-05-20 6 views
3

Wir haben eine Reporting-Anwendung, in der alle Datetime in UTC in der Datenbank (SQL Server 2005)Anzeige Datetime-Daten in Benutzer Time-Zone in Datatable

Die Reporting-Anwendung gespeichert sind, funktioniert einfach eine Datatable werden das Abrufen und die Bindung an ein Datagrid-Anzeige die Information.

Wenn wir die angemeldeten Benutzer Zeitzone (z + 3 GMT) wissen, ist es eine Möglichkeit, die Datentabellen Daten zu aktualisieren, die in UTC sind jetzt in der Benutzerzeitzone angezeigt werden?

Wir wissen, dass wir Thorugh jede Spalte/Zeile in der Datentabelle spulen kann, und eine Konvertierung zu tun, aber gibt es eine bessere effizientere Art und Weise?

Antwort

0

Ich würde die Zeit ändern, wie es dem Benutzer angezeigt wird. Behalten Sie bei, wie es konsistent gespeichert wird, speichern Sie jedoch, was ihre Zeitzone ist, und ändern Sie dann die Benutzeroberfläche, um die korrekte Ortszeit anzuzeigen. Wenn zum Beispiel der Zeitzone Central Standard Time ist, dann könnte man etwas ähnlich den folgenden Code verwenden:

SomeDataObject someDataObject = new SomeDataObject(); 

someDataObject.TimeZone = -5; //UTC Timezone for Central Standard Time 
someDataObject.Time = DateTime.Now; 

DateTime someTime = someDataObject.Time; 
someTime.Add(someDataObject.TimeZone); // Display this back to the user 
+0

'UTC Zeitzone für die zentrale Standardzeit ', was? –

0

Wenn .NET verwendet, gibt es ein in der Klasse gebaut, die genau für diesen Zweck hergestellt wurden. Timezone (http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx), wie aus dem Artikel entnommen:

A Timezone Objekt jede Zeitzone darstellen kann, und Methoden der Timezone Klasse können verwendet werden, um die Zeit in einer Zeitzone in einem anderen Zeitpunkt zu der entsprechenden Zeit zu konvertieren Zone. Die Mitglieder der TimeZoneInfo-Klasse unterstützen die folgenden Vorgänge:

  • Abrufen einer Zeitzone, die bereits vom Betriebssystem definiert wurde.
  • Auflisten der Zeitzonen, die auf einem System verfügbar sind.
  • Konvertieren von Zeiten zwischen verschiedenen Zeitzonen.
  • Erstellen einer neuen Zeitzone, die noch nicht vom Betriebssystem definiert wurde.
  • Serialisieren einer Zeitzone für späteren Abruf.
  • Hoffe das hilft.

    +0

    Beachten Sie, dass TimeZoneInfo nur in .NET 3.5 und höher verfügbar ist. – Liedman