none
VB2010SP1 Datevalue + Timevalue liefert unbrauchbares Ergebnis RRS feed

  • Frage

  • Moin zusammen,

    ich verarbeite gerade ein Datum aus einem Monthview und eine Zeitangabe aus einer Textbox wie folgt:

    Debug.print( DateValue(MonthView1.SelectionRange.Start)+ TimeValue(tboxAZVon.Text) )
    23.09.201106:50:00

    ich prüfe danach in der weiterführenden Funtion ob es sich um einen gültigen Datumswert handelt
    Debug.print( IsDate("23.09.201106:50:00") )
    False
    erwartet hätte ich dieses Ergebnis
    Debug.print( IsDate("23.09.2011 06:50:00") )
    True

    in vorhergehenden Versionen VB war das auch kein Problem. Sind doch beides Datevalues, sollte doch eigentlich was sinnvolles zu erwarten sein.

    Gruß Ingo

    Sonntag, 25. September 2011 08:29

Antworten

  • Für Leute die das Interessiert, hier eine Lösung wie man es Richtig macht.

     

    Friend Class DateAndTime

      Friend Overloads Shared Function Join(D As Date, T As TimeSpan) As DateTime

        Return D.Date.Add(T)

      End Function

      Friend Overloads Shared Function Join(D As Date, T As String) As DateTime

        Dim Zeit As TimeSpan = TimeSpan.Parse(T)

        Return Join(D, Zeit)

      End Function

      Friend Overloads Shared Function Join(D1 As Date, D2 As Date) As DateTime

         Dim Zeit As TimeSpan = D2.TimeOfDay

         Return Join(D1, Zeit)

      End Function

    End Class


    Aufrufen kann man das ganze dann z.B. mit

    MsgBox(DateAndTime.Join(Date.Today, Date.Now.TimeOfDay))

    MsgBox(DateAndTime.Join(Date.Today, "10:20:12"))

    Dim z As TimeSpan = TimeSpan.Parse("10:12:13")

    Dim d2 As Date = Date.MinValue.Add(z)

    MsgBox(DateAndTime.Join(Date.Today, d2))

    • Als Antwort markiert BIngo2065 Montag, 26. September 2011 15:48
    Montag, 26. September 2011 09:41

Alle Antworten

  • Den Fehler müßtest du aber selbst sehen!

    Falsch: ("23.09.201106:50:00")
    Richtig: ("23.09.2011 06:50:00")

     

    Sonntag, 25. September 2011 09:23
  • Um dem Problem aus dem Weg zu gehen versuche es mal hiermit

     

     

    Dim Datum As Date = MonthView1.SelectionRange.Start

    Dim Zeit As TimeSpan = TimeSpan.Parse("12:14:14")

    Dim DatumZeit As DateTime = Datum.Add(Zeit)

    Sonntag, 25. September 2011 09:55
  • Für Leute die das Interessiert, hier eine Lösung wie man es Richtig macht.

     

    Friend Class DateAndTime

      Friend Overloads Shared Function Join(D As Date, T As TimeSpan) As DateTime

        Return D.Date.Add(T)

      End Function

      Friend Overloads Shared Function Join(D As Date, T As String) As DateTime

        Dim Zeit As TimeSpan = TimeSpan.Parse(T)

        Return Join(D, Zeit)

      End Function

      Friend Overloads Shared Function Join(D1 As Date, D2 As Date) As DateTime

         Dim Zeit As TimeSpan = D2.TimeOfDay

         Return Join(D1, Zeit)

      End Function

    End Class


    Aufrufen kann man das ganze dann z.B. mit

    MsgBox(DateAndTime.Join(Date.Today, Date.Now.TimeOfDay))

    MsgBox(DateAndTime.Join(Date.Today, "10:20:12"))

    Dim z As TimeSpan = TimeSpan.Parse("10:12:13")

    Dim d2 As Date = Date.MinValue.Add(z)

    MsgBox(DateAndTime.Join(Date.Today, d2))

    • Als Antwort markiert BIngo2065 Montag, 26. September 2011 15:48
    Montag, 26. September 2011 09:41
  • Hi JangoF,

    danke der Hinweis mit dem TimeSpan war der entscheidende, Deine Lösung ist die technisch bessere, habe meinen Blödsin rausgenommen. Danke noch mal

    Montag, 26. September 2011 15:54