PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DateTime.Parse als selbsterkennend programmierbar?


Durcairion
2007-09-13, 16:12:32
Ich habe zur Zeit folgenden Code:


IFormatProvider culture = new CultureInfo("de-DE", true);
DateTime msgdatetime = new DateTime();
msgdatetime = DateTime.Parse(value.TrimStart(), culture);


Das Datum kommt aus einem Programmlog und wird dort in der jeweiligen Laendereinstellung gespeichert. Also z.B. unter einem deutschen Windows sieht der String dann so aus: 22.08.2007 13:20:22

Nun stehe ich vor dem Problem, dass ich gerne die Logfiles einlesen wuerde und auch den Datestamp. Jedoch muss ich bei DateTime.Parse direkt angeben in welchem Format bzw welche CultureInfo der String hat.

Ich habe mich auch schon an TryParse versucht, dort muss man jedoch ebenfalls angeben in welcher CultureInfo der Timestamp im String vorliegt.

Gibt es hier irgend eine Moeglichkeit, die es schafft herauszufinden in welchem Format der String ist und diesen dann in das DateTime Objekt der aktuell in Windows eingestellten CultureInfo zu wandeln?

Gast
2007-09-14, 08:51:00
Nunja, eine effiziente Möglichkeit fällt mir jetzt nicht ein. Aber du könntest z.B. den string solange versuchen mit allen Cultures im System zu parsen bis es geht.

Beispiel:


System.Globalization.CultureInfo[] cultures = System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.A llCultures);

DateTime time = DateTime.Now;

foreach (System.Globalization.CultureInfo c in cultures)
{
try
{
time = DateTime.Parse("8/22/2007 1:20:22 PM", c);
break;
}
catch(Exception ex) {}
}

Console.WriteLine(time.ToString());