none
String "04/23/2012 08:00:00 AM" wieder als DateTime object parsen RRS feed

  • Frage

  • Hallo zusammen,

    mein Programm läuft auf deutschen und englischen Rechnern. Auf dem englischen gibt es eine InvalidFormatExcption bei dem Versuch diesen String wieder in DateTime zurückzuwandeln.

    Auf einem deutschen Rechner gehen die ersten beiden Zeilen. Der Fehler tritt in der vierten Zeile auf.

           Dim d As String = "23.04.2012 06:00"
            Dim dt As DateTime = DateTime.Parse(d)
            d = "04/23/2012 08:00:00 AM"
            dt = DateTime.Parse(d)

    Nun möchte ich aber keine neue Version nur für Englisch auskehren. Wie kann ich es erreichen, dass beide Zeitformate akzeptiert werden?

    Wie kann ich es erreichen, dass auf einem englischen Rechner ein deutsches Programm läuft?

    Gruss Ellen


    Ich benutze/ I'm using VB2008 & VB2010


    Montag, 23. April 2012 09:23

Antworten

  • Die Parse-Methode erlaubt als zweites Argument ein CultureInfo, so diese Zeichenketten Eingaben eines Benutzers sind, reicht unter Umständen

      Dim dt  As DateTime = DateTime.Parse(Thread.CurrentThread.CurrentUICulture)


    MVP Data Platform Development My blog

    • Als Antwort markiert Ellen Ramcke Montag, 23. April 2012 11:24
    Montag, 23. April 2012 09:37
  • Hallo Martin,

    vielen Dank für die Info. Die fehlte. Ich habe das jetzt anders realisiert:

           Dim currentCulture As CultureInfo = System.Globalization.CultureInfo.CurrentUICulture
            Dim cultureDE As CultureInfo = CultureInfo.CreateSpecificCulture("de-DE")
            Dim cultureEN As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
            Dim d As String = "23.04.2012 06:00"
            Dim dt As DateTime = DateTime.Parse(d, currentCulture)
            currentCulture = CultureInfo.CreateSpecificCulture("en-US")
            d = "04/23/2012 08:00:00 PM"
            dt = DateTime.Parse(d, currentCulture)

    Gruss Ellen


    Ich benutze/ I'm using VB2008 & VB2010


    Montag, 23. April 2012 11:24

Alle Antworten

  • Die Parse-Methode erlaubt als zweites Argument ein CultureInfo, so diese Zeichenketten Eingaben eines Benutzers sind, reicht unter Umständen

      Dim dt  As DateTime = DateTime.Parse(Thread.CurrentThread.CurrentUICulture)


    MVP Data Platform Development My blog

    • Als Antwort markiert Ellen Ramcke Montag, 23. April 2012 11:24
    Montag, 23. April 2012 09:37
  • Hallo Martin,

    vielen Dank für die Info. Die fehlte. Ich habe das jetzt anders realisiert:

           Dim currentCulture As CultureInfo = System.Globalization.CultureInfo.CurrentUICulture
            Dim cultureDE As CultureInfo = CultureInfo.CreateSpecificCulture("de-DE")
            Dim cultureEN As CultureInfo = CultureInfo.CreateSpecificCulture("en-US")
            Dim d As String = "23.04.2012 06:00"
            Dim dt As DateTime = DateTime.Parse(d, currentCulture)
            currentCulture = CultureInfo.CreateSpecificCulture("en-US")
            d = "04/23/2012 08:00:00 PM"
            dt = DateTime.Parse(d, currentCulture)

    Gruss Ellen


    Ich benutze/ I'm using VB2008 & VB2010


    Montag, 23. April 2012 11:24