2009-09-28 12 views
5

Wie konvertiert man die Zeichenfolge "28/09/2009" zu DateTime in einem bestimmten Format? Beispiel: Ich möchte "2009-09-28 17:30:40" in DateTime umwandeln. Ich möchte "28/09/2009 17:30:40" in DateTime umwandeln. Ich möchte "20090928 17:30:40" zu DateTime konvertieren.Wie konvertiert man eine Zeichenfolge in ein bestimmtes DateTime-Format in C#?

Es gibt mehrere mögliche Formate. Ich habe folgendes versucht:

In diesem Beispiel wird eine Ausnahme mit der Meldung "Zeichenfolge wurde nicht als gültige DateTime erkannt" ausgelöst.

Was ist falsch im obigen Code?

+0

Falai Brazuca! :) Können Sie uns ein wenig mehr Informationen zu Ihrem Szenario geben? Erhalten Sie Daten in allen drei Formaten mit demselben Kontext? –

+0

Fala aí .... Ich muss ein XML-Dokument lesen. In diesem Dokument gibt es Zeichenfolgen, die Datumsangaben darstellen. Diese Daten können jedoch in mehreren Formaten vorliegen. Ich muss diese Formate identifizieren und die Zeichenfolgen in DateTime konvertieren. –

Antwort

12

Keines Ihrer Formate stellt den Tag an erster Stelle, so: "dd/MM/yyyy".

Beachten Sie auch die Großbuchstaben 'M', da Kleinbuchstaben 'm' für 'Minuten' steht. Sie haben ein ähnliches Problem mit Ihren Stunden; Da Ihre Samples alle 24 Stunden verwenden, benötigen Sie ein großes "H".

Ihr Format-String-Array sollte wie folgt aussehen:

string[] formats = {"dd/MM/yyyy", "yyyy-MM-dd HH:mm:ss", "dd/MM/yyyy HH:mm:ss", "yyyyMMdd HH:mm:ss"}; 

Diese Formate genau Ihren gelieferten Probe Strings entsprechen.

Zusätzlich möchten Sie in diesem Fall wahrscheinlich die invariante Kultur anstelle von en-US verwenden. Andernfalls ist das Zeichen '/' in Ihren Formatzeichenfolgen wirklich ein kulturspezifisches Datumstrennzeichen, das ein Benutzer möglicherweise auf seinem lokalen System überschreitet.

Schließlich, da Sie offensichtlich Schwierigkeiten haben, die Strings zusammenzufassen, möchten Sie vielleicht TryParseExact() verwenden, die genau wie parse genau funktioniert, aber einen out Parameter verwendet, anstatt den Wert zurückzugeben, so dass es einen booleschen Wert zurückgeben kann um Erfolg oder Misserfolg anzuzeigen, anstatt eine Ausnahme auszulösen.

Siehe die vollständige Format-String-Referenz hier:
http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

Verwandte Themen