Parse-DateTime-mit Zeit-zone von der form PST/CEST/UTC/etc
Ich versuche zu analysieren, eine internationale datetime-string ähnlich:
24-okt-08 21:09:06 CEST
Bisher habe ich so etwas wie:
CultureInfo culture = CultureInfo.CreateSpecificCulture("nl-BE");
DateTime dt = DateTime.ParseExact("24-okt-08 21:09:06 CEST",
"dd-MMM-yy HH:mm:ss ...", culture);
Das problem ist, was sollte ich für den '...' im format-string? Blick auf die Benutzerdefinierte Formatzeichenfolge für Datum und Uhrzeit MSDN Seite scheint nicht zu Liste ein format-string für die Analyse von Zeitzonen im PST/CEST/GMT/UTC form.
Für die Aufzeichnung, Zeit zone Abkürzungen wie EST, PST, CST sind nicht standardisiert und sind manchmal mehrdeutig (z.B. CST kann bedeuten, dass beide US-Central Standard Time-GMT-6 und China Standard Time (GMT+8).
und "Cuba Standard Time" Karibik UTC -5 und "Central Standard Time" Mittelamerika UTC - 6 Stunden. timeanddate.com/library/abbreviations/timezones
und "Cuba Standard Time" Karibik UTC -5 und "Central Standard Time" Mittelamerika UTC - 6 Stunden. timeanddate.com/library/abbreviations/timezones
InformationsquelleAutor thelsdj | 2008-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
AFAIK die Zeit zone Abkürzungen werden nicht erkannt. Allerdings, wenn Sie ersetzen die Abkürzung durch die Zeitzonen-offset, es wird in Ordnung sein. E. g.:
Nein, es ist nicht möglich, da der offset angegeben wird hier manuell.
Es wird, vorausgesetzt, Sie haben eine Replace-Aufruf für alle, die Zeitzonen, die Sie möglicherweise erhalten und die Quelle, Datum, verwendet die korrekte Zeitzone (z.B. nicht verwenden, EST, wenn Sie meine EDT)
also warte.. es tut behandeln Sommerzeit oder nicht?
Angesichts CEST (central european summer time) und MEZ (Mitteleuropäische [winter -] Zeit) sind nicht die gleichen, dann ja. Aber ein Aufruf zu ersetzen, ist riskant, da Sie nicht wissen, ob MESZ/MEZ Eintritt in den Datum-string für Kultur-X.
InformationsquelleAutor Panos
Die kurze Antwort ist, Sie kann es nicht.
Hier ist der Grund, warum
Gibt es eine definitive Datenbank der Welt, Zeitzonen, Sie können es von der IANA hier.
Das problem ist, die 3 oder 4 Buchstaben-Abkürzungen haben eine viele-zu-eine Verknüpfung mit der IANA Zeitzonen. Zum Beispiel
"AMT"
bedeutet, verschiedene Dinge, je nach Ihrer Kultur, was Teil der Welt Sie sich befinden, und der Kontext Ihrer Anwendung.Wenn Sie wirklich wollen, zu begegnen, schlage ich vor, Noda Zeit repräsentieren Ihr
Instance
s. Sie müssen code schreiben, der zum konvertieren der Abkürzungen zu einem standard IANA Zeitzone.Wir können das nicht für Sie, es hängt vom Kontext Ihrer Anwendung.
Weiteres gutes Beispiel ist
"CST"
.CultureInfo
Objekt der parser keine Verwechslungen Ihren Kontext.ja, wenn Sie wollten, dass die Abkürzungen in diesem Fall in einer vergangen Kultur, die Sie arbeiten könnte sich die Zuordnungen.
Nein, Sie konnte es nicht. Kultur-info wird Ihnen sagen, Dinge über die Sprache des Benutzers und kulturellen Präferenzen. Es wird Ihnen sagen, nichts über die Zeitzone des Benutzers. Meine Kultur sein könnte
en-US
auch wenn ich zu Besuch bin Japan.aber wenn Ihre Kultur ist
en-US
könnten wir folgern, dassCST
gemeint"Central Standard Time" North America UTC -6
Sie unabhängig von Ihrer Zeitzone, auch wenn esUTC-5
. Natürlich, was angemessen ist für eine Anwendung ungeeignet sein für den anderen. Im abstrakten, Sie können nicht sagen, wie meine Antwort-Staaten. Mit genügend Kontext, ein Teil von denen wäre, die er der Kultur, wir sagen könnte."en-US" soll bedeuten, "English as spoken in the United States". In anderen Worten, UNS ist bezogen auf Dialekt, nicht die Lage. Warum ist es richtig zu folgern, Central Standard Time von CST nur, weil ich Englisch sprechen in der Weise, dass die Amerikaner tun? Sicher, die Amerikaner sagen "CST", aber wir könnten auch sagen, dass bezogen auf China - vor allem, wenn wir gerade in China. 🙂
InformationsquelleAutor Jodrell
Wörterbuch der Abkürzungen, wenn Sie sich entscheiden, zu gehen, die suchen&ersetzen Sie die route (die ich habe).
Natürlich ist es das. Es ist genauso (un)zuverlässig wie mit diesen nicht-standardisierten Zeitzonen in den ersten Platz. Meine Antwort ist nur die Sicherung der akzeptierten Antworten. Denken Sie daran, um nach unten zu Stimmen, dass, wie gut.
Manche Menschen (ich würde sogar noch weiter gehen und sagen, die meisten) eigentlich nur Daten empfangen relevant, um eine einzige Kultur. Dieser Ansatz, inperfect, genügt.
Das ist unzuverlässig, selbst für eine einzelne Kultur. Russland verändert Sommerzeit-Regeln viele Male in den letzten 4 Jahren. Zuordnung der Kürzel zu einer IANA-oder Windows-tz-Namen und nach den aktuellen Regeln ist weitaus zuverlässiger
InformationsquelleAutor Jussi Palo
Habe ich zwei Antworten, weil ich bin mir nicht ganz sicher, was Ihr bittet.
1) ich sehe sind Sie mit CultureInfo, so dass, wenn Sie nur wollen, um format
das Datum und die Zeit werden kulturspezifische, würde ich trennen Sie das Datum/Zeit und Zeitzone, gelten Kultur-Methode für Datum/Zeit und fügen Sie die Zeitzone. Wenn "CEST" ist für die unterschiedlichen Kulturen, die Sie haben, um es zu ändern, indem der Liste der Optionen (vielleicht in einer case-Anweisung).
2) Wenn Sie möchten, dass Datum/Uhrzeit umgewandelt werden, um zu einer anderen Zeitzone, können Sie nicht verwenden, CultureInfo,
Schlage ich vor zu Lesen:
http://msdn.microsoft.com/en-us/library/ms973825.aspx
Können Sie auch die .net framework 3.5 TimeZoneInfo-Klasse (eine andere Zeitzone), um Ihr Leben leichter machen.
http://msdn.microsoft.com/en-us/library/system.timezoneinfo.aspx
InformationsquelleAutor hmak
Dies ist, wie:
mit
Dies ist immer noch eine schlechte Antwort für die Gründe diskutiert, die an anderer Stelle auf dieser Seite. Sie sind hart codierten Annahmen über das, was Abkürzungen wie "AMT" oder "CST" bedeuten. Das problem ist, hat diese Frage keine gute Antwort; die codes sind nicht eindeutig und keine lookup-Tabelle können Sie definitiv. Diese Annahmen können allerdings zu lösen OP ' s problem, aber Sie wurden nicht erwähnt in der Frage.
Setzen Sie nicht "Necromancing" Erklärungen in deinen Beiträgen. Diese sind in Unordnung; SO ist keine Politik über Aktivitäten auf alte Fragen. Wenn überhaupt, ist es etwas ermutigt, weil neue Antworten entstehen, weil sich die Technologie ändert.
InformationsquelleAutor Stefan Steiger
Hier ist, was ich zu tun hatte.
Erhalte ich die datetime von javascript und übergeben ihn an ASP.NET zum speichern in einer Oracle-Datenbank. Hier ist mein C# code für Ost-und zentral-Zeiten.
InformationsquelleAutor Deep Kumar