Ich kenne die System.TimeZone Klasse sowie die vielen Anwendungen der DateTime.ToString() Methode. Was ich nicht finden konnte, ist eine Möglichkeit, eine DateTime in eine Zeichenkette zu konvertieren, die zusätzlich zu den Zeit- und Datumsinformationen die aus drei Buchstaben bestehende Zeitzonenabkürzung enthält (in der Tat ähnlich wie die Tooltips von StackOverflow für relative) Zeitanzeige funktioniert).Wie wird DateTime mit einer verkürzten Zeitzone angezeigt?
Um ein Beispiel zu geben, das für jeden einfach zu befolgen und zu konsumieren ist, fahren wir mit dem StackOverflow-Beispiel fort. Wenn Sie sich die QuickInfo ansehen, die zu den relativen Zeiten angezeigt wird, werden das vollständige Datum, die Uhrzeit einschließlich der Sekunden im 12-Stunden-Format, eine AM/PM-Bezeichnung und dann die aus drei Buchstaben bestehende Zeitzonenabkürzung (in diesem Fall Koordiniert) angezeigt Weltzeit). Ich weiß, dass ich GMT oder UTC leicht mit den eingebauten Methoden bekommen könnte, aber was ich wirklich will, ist die Zeit, wie es in diesem Fall lokal ist, auf einem Webserver —.
Wenn unser Webserver Windows Server 2k3 ausführt und seine Zeitzone auf CST eingestellt ist (oder bis daylight saving zurückschaltet, CDT ist das?), Möchte ich, dass unsere ASP.NET-Webanwendung DateTimes relativ zu anzeigt Diese Zeitzone sowie formatiert, um eine "CST" am Ende anzuzeigen. Mir ist klar, dass ich das leicht programmieren kann, aber im Interesse der Robustheit würde ich wirklich eine Lösung bevorzugen, die auf dem Server basiert, auf dem die BS-Umgebungseinstellungen des Codes laufen.
Gerade jetzt, ich habe alles, aber die Zeitzone Abkürzung mit dem folgenden Code:
myDateTime.ToString("MM/dd/yyyy hh:mm:ss tt")
Welche zeigt:
10/07/2008 15.40.31
Alle ich will (und es ist nicht viel, versprochen!) ist es zu sagen:
10/07/2008 03.40.31 CDT
Ich kann System.TimeZone.CurrentTimeZone verwenden und es verwenden, um "Central Daylight Time" korrekt anzuzeigen, aber ... das ist der Kürze halber etwas zu lang. Bin ich dann fest und schreibe eine String-Manipulationsroutine, um Leerzeichen und alle nicht-großgeschriebenen Buchstaben zu entfernen? Während das funktionieren könnte, scheint das unglaublich hacken zu mir ...
Googling und sah sich um hier nicht etwas zu meiner spezifischen Frage anwendbar.
Dieser Ansatz hat einige Fehler. Zum Beispiel in Arizona, wo sie Mountain Standard Time verwenden und keine Sommerzeit beobachten, hat .NET einen DaylightName und einen StandardName von "US Mountain Standard Time", der "UMST" mit Ihrer Methode anzeigt. Ich würde erwarten, stattdessen "MST" zu sehen (sowohl im Sommer als auch im Winter). Leider scheint das .NET-Framework hier zu kurz zu kommen, so dass ich auf eine statische Lookup-Tabelle zurückgegriffen habe. – codemonkey
Dies funktioniert nicht für so viele Zeitzonen, z. ** ACT ** _Acre Time_ (UTC-5) – Tanmay