VB.net oder C# deutsches Datum <> englische

Hi zusammen.

Ich versuche mich nun schon seit längerem ein deutsches Datum in ein englisches Datum zu konvertieren.

Und zwar habe ich ein deutsches Datum mit dem Format:
dd.mm.yyyy
diese soll nun in ein englisches Datum konvertiert werden mit dem Format:
yyyy-mm-dd hh:ii:ss

Habs über die DateTime.Parse versucht aber ohne Erfolg.
Was mache ich falsch??

Vb.net Code

Try
 dtime = DateTime.Parse(columnName.ToString(), New System.Globalization.CultureInfo("de-De"))
 MsgBox(dtime.ToString())
 validFormat = True
Catch ex As Exception
 validFormat = False
End Try

Vielen Dank.

Gruß,
Sebastian

Hi!
Das Parse sieht schon ganz vernünftig aus (wenngleich ich mich etwas gewundert habe, warum ein Spaltenname („columnName“) ein Datum enthalten soll…
In der nächsten Zeile gibst Du das Datum mit einfachem DateTime.ToString() aus - das verwendet die momentane Locale das aktuellen Threads, und das ist vermutlich deutsch.
Schau’ Dir mal die Überladungen von DateTime.ToString() an, damit müsstest Du weiter kommen.

Gruß,
Martin

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Martin.

Das Parse sieht schon ganz vernünftig aus
(wenngleich ich mich etwas gewundert habe, warum ein
Spaltenname („columnName“) ein Datum enthalten soll…
In der nächsten Zeile gibst Du das Datum mit einfachem
DateTime.ToString() aus - das verwendet die
momentane Locale das aktuellen Threads, und das ist vermutlich
deutsch.
Schau’ Dir mal die Überladungen von
DateTime.ToString() an, damit müsstest Du
weiter kommen.

Ok cool habe es jetzt hinbekommen. über den Formatstring: dtime.ToString(„yyyy-MM-dd HH:mm:ss“)!!

Nun stehe ich vor dem Problem…

Durch diesen Code:

 dtime = DateTime.Parse(columnValue.ToString(), New System.Globalization.CultureInfo("de-De"))
 columnValue = dtime.ToString("yyyy-MM-dd HH:mm:ss")
 blnValidFormat2 = True

ist die Applikation nun so langsam, die braucht jetzt ca. 300% mehr Zeit. Für knapp 2,25 Millionen Durchläufe. Kann man das optimieren??

Gruß,
Sebastian

Hi Sebastian,

dtime = DateTime.Parse(columnValue.ToString(), New System.Globalization.CultureInfo („de-De“))

Für knapp 2,25 Millionen Durchläufe. Kann man das optimieren??

ich kenne diese Bibliotheken nicht genau, aber ich würde darauf tippen, dass du dasselbe CultureInfo-Objekt für alle Parse-Aufrufe verwenden kannst, anstatt 2,25 Millionen Instanzen zu erzeugen.

Andreas

Hi!

dtime = DateTime.Parse(columnValue.ToString(), New System.Globalization.CultureInfo („de-De“))

Für knapp 2,25 Millionen Durchläufe. Kann man das optimieren??

ich kenne diese Bibliotheken nicht genau, aber ich würde
darauf tippen, dass du dasselbe CultureInfo-Objekt für alle
Parse-Aufrufe verwenden kannst, anstatt 2,25 Millionen
Instanzen zu erzeugen.

Habe nun das CultureInfo-Objekt nur einmal definiert und dadurch gewann ich nichts.

War genau schnell wie vorher!

Nun habe ich aber eine if-Anweisung eingefügt, wo mir überprüft ob ein Datum mit dem Format dd.mm.yyyy hh:mm:ss herkommt und nur dann wenn dies zutrifft kommt diese Zeile:

dtime = DateTime.Parse(columnValue.ToString(), **New System.Globalization.CultureInfo** ("de-De"))

Durch die if-Anweisung gehts nun wieder flink!!

Gruß und schönen Tag,
Sebastian