Laden...

Zeitzone bei Datumsformatter

Erstellt von mosspower vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.131 Views
mosspower Themenstarter:in
456 Beiträge seit 2007
vor 16 Jahren
Zeitzone bei Datumsformatter

Hallo Kollegen,

zwei Fragen bezüglich Zeitzonen. Ich möchte bei meiner Anwendung jegliche Datumsangaben in UTC (oder von mir aus GMT, was ja (fast) das gleiche ist) dargestellt bekommen. Nun meine Fragen.

a) Kann man eine Applikation so konfigurieren, dass alle Datums- oder Zeitangaben in der konfigurierten Zeitzone stattfinden (ohne das Systemdatum zu ändern)?

b) Kann ich ein Datum mit dem Datumformatter nach UTC formatieren? z.B. HH:mm:ss,fff z zeigt mir an: 01:21:09,968 +02 .. ich möchte aber nicht +02, sondern 23:21:09,968 UTC oder so ähnlich, wie geht das (wenn überhaupt)?

Danke schon mal im voraus.

M
303 Beiträge seit 2006
vor 16 Jahren

Der Benutzer muss seine Zeitzone konfigurieren können, wodurch du ein Offset erhälst, z.B. UTC +2:00.
Nun kannst du in deinen Datentabellen / Dateien / sonstigen Persistenzobjekten alle Zeiten als UTC speichern, und bei der Anzeige für den Benutzer rechnest du sein Zeitzonen-Offset drauf, mit DateTime.AddHours.

In .NET 3.5 wird es im Übrigen zwei neue Klassen geben, die dem Zeitzonenproblem besser gerecht werden als DateTime.

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo mosspower,

zu a):

Ab .NET Framework 2.0 enthält die DateTime-Struktur ein 64-Bit-Feld, das aus einem privaten Kind-Feld und dem Ticks-Feld zusammengesetzt ist. Das Kind-Feld ist ein 2-Bit-Feld, das angibt, ob die DateTime-Struktur eine lokale Zeit, eine koordinierte Weltzeit (Coordinated Universal Time, UTC) darstellt, oder ob UTC oder lokale Zeit nicht angegeben sind. Das Kind-Feld wird verwendet, um Konvertierungen zwischen lokaler Zeit und UTC zu behandeln, aber nicht, um Vergleichs- und Arithmetikoperationen auszuführen. Der Wert des Kind-Felds kann mit der Kind-Eigenschaft abgerufen werden.

zu b): ToUniversalTime

herbivore

mosspower Themenstarter:in
456 Beiträge seit 2007
vor 16 Jahren

OK, vielen Dank erst mal, ich wollte nur auf Nummer sicher gehen, bin noch nicht so lang dabei in C#. Dann muss ich es wohl (leider) manuell (selbst) machen, ich dachte, dass man dies beim Startup oder in der Config einstellen kann.