2010-01-27 7 views
7

Ich habe eine Zeichenfolge, die einen DataTime-Wert darstellt, und ich möchte herausfinden, welches Zeichenfolgenformat zum Erstellen der Zeichenfolge verwendet wurde.Trainieren Sie das für die DateTime-Formatierung verwendete Zeichenfolgenformat

Zum Beispiel
- Gegeben "Mittwoch 27. Januar 2010" Ich erwarte, dass "dddd dd MMM yyyy"
- Bei "2010 01 27" Ich erwarte, dass "yyyy MM dd"

wird angenommen, dass das Datum der Nähe zu DateTime.Now und bezieht sich auf die CurrentCulture. Also vorausgesetzt, dass wir en-GB Kultur haben
- Gegeben "01 01 2010" erwarte ich "TT MM JJJJ"

Gibt es eine einfache Möglichkeit, dies zu tun?

+0

Sorry, aber warum sind suchst du das? – Lazarus

+0

(Möglicherweise) dumm Kommentar, aber Sie wissen, dass Sie eines dieser Daten an DateTime.Parse (oder TryParse) übergeben können und es das Datum korrekt analysieren? Ich nehme jedoch an, dass Sie die Daten in der Form zurückgeben müssen, die sie an Sie übergeben, daher müssen Sie das Format kennen, in dem sie ankommen. –

+0

Ich analysiere etwas Ausgabe von einem alten Programm für meinen Onkel und möchte wissen, dass "Mittwoch" kann ignoriert werden, da es sich um einen "dddd" -Teil handelt. – Sophie88

Antwort

0

Sie auf Leerzeichen geteilt könnten einen Array von Strings erhalten dann könnte man die Elemente in dem Array vor bekannten Werten testen, um zu versuchen, das Format

zum Beispiel zu erraten wenn Sie für „Mittwoch“ suchen, wenn Sie es finden, annehmen „dddd“

wenn eine vierstellige Zahl annehmen yyyy

Tage und Monate könnte ein Problem sein, könnten Sie für> 12 für die Tage testen, aber das ist ziemlich schlecht

vielleicht haben Sie das Format mit Leerzeichen Split dann DateTime.Parse auf dem orignal und Test gegen einen formatiert (mit dem infered Format) Version des analysierten Datum für die Gleichstellung Sophie88 ableiten könnte fragen

+0

Mit der aktuellen Kultur kann ich die Namen der Wochentage irgendwie überprüfen? – Sophie88

+0

Sie könnten eine Annahme über die Reihenfolge von zweistelligen Tagen und Monaten basierend auf der aktuellen Kultur machen, aber die "alte Software" könnte die aktuelle Kultur sowieso nicht respektieren. – PeanutPower

+0

@ Sophie88: Ja, Sie können die DateTimeFormat -Eigenschaft der CultureInfo-Klasse verwenden Das hat eine Eigenschaft namens DayNames, die eine Liste der Tagnamen für diese Kultur zurückgibt. –

1

Die einfachste Sache zu tun ist Blick auf the reference für Datetime Formatierung Strings und arbeiten sie aus.

Sie können möglicherweise Reflexion verwenden, um dies zu erhalten, oder verwenden Sie Disassembler (z. B. ILDASM), um alle Zeichenfolgen in einer Assembly zu finden und erraten, welche Datumsformatformatzeichenfolge sind.

Wenn Sie sich entmutigen lassen, können Sie nach den Wochentagen suchen und nach einer Zeichenfolge, die mit dddd beginnt, die Ihnen sagen soll, wie das Original erstellt wurde.

Verwandte Themen