Wie format ich DateTime oder TimeZone/TimeZoneinfo, um drei Buchstaben anzuzeigen?
-
20-09-2019 - |
Frage
Ich arbeite mit einer Spezifikation zusammen, die ein eigenartiges DateTime -Format erfordert, mit dem ich noch nicht unbedingt arbeiten musste.
Zum Zeitpunkt der Prozesszeit muss ein OFX (1 nicht 2) DateTime in einem Format wie folgt gestempelt werden (entweder dtclient oder dtServer):
20071015021529.000
In den Beispielen wird jedoch gezeigt:
20071015021529.000[-8:PST]
Ich habe kein Problem mit der ersten, die eine Aussage von verwendet
DateTime.Now.ToString("yyyyMMddHHmmss.fff")
Ich kann sogar herausfinden, wie man bekommt %z
Um den richtigen Versatz zu erhalten.
Der drei Buchstaben Timezone -Code ist, wo ich stolpere. Gibt es eine einfache Möglichkeit, dies in .NET zu bekommen, oder schreibe ich am Ende Code, um auszugeben und zu analysieren, was ich brauche?
Lösung
Sie müssen genau herausfinden, welche 3 Buchstabencodes es benötigt. Was würde Europe/Paris
Zum Beispiel geben? Persönlich würde ich die Daten in UTC konvertieren und diese so formatieren, es sei denn, Sie müssen die Zeitzoneninformationen beibehalten.
Andere Tipps
Die Drei-Buchstaben-Zeitzonencodes sind in den Ländern nicht einzigartig und nicht vollständig standardisiert. Zum Beispiel kann "CST" die Abkürzung für "Central Standard Time (USA)" oder "Chinesische Standardzeit" sein. Das korrekt ist, hängt von Ihrem Gebietsschema ab.
Meines Wissens gibt es keine Funktionen in das .NET -Framework, um nach Codes wie diesen zu suchen, sodass Sie es selbst implementieren müssen.
Zusätzlich (aber Sie wissen dies wahrscheinlich) müssen Sie vorsichtig sein, wie Sie diese Funktionalität implementieren. Es gibt nicht unbedingt eine Eins-zu-Eins-Korrespondenz zwischen UTC-Offsets und Zeitzonencodes. Zum Beispiel könnte UTC-0700 entweder US Mountain Standard Time (MST) sein oder US Pacific Daylight Time (PDT).
Wenn Sie R verwenden, erhalten Sie das RFC -Format. Wird es dir helfen?
String.Format("{0:r}", dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123
Du kannst auch Überprüfen Sie diesen Link, also Link, wenn es Ihnen helfen kann.