prüfen, ob ein String eine Zeit ist

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von dolce.

    prüfen, ob ein String eine Zeit ist

    Hallo Gemeinde!
    Dem Tipp von picoflop folgend habe ich eine Funktion entwickelt, die einen String entgegen nimmt, diesen erst einmal prüft, ob es sich um ein Datum handelt und dann schaut, ob es eine Zeit ist.

    Würdet ihr das genau so machen oder gibt es eurerseits noch Verbesserungsmöglichkeiten?

    VB.NET-Quellcode

    1. Function isTime(ByVal zuPruefenderString As String) As Boolean
    2. Dim istZeit As Boolean = False
    3. If IsDate(zuPruefenderString) = False Then Exit Function
    4. If DateTime.Parse(zuPruefenderString).Date = Date.Today.Date Then istZeit = True
    5. Return istZeit
    6. End Function


    Vielen Dank für eure Mühe!
    Gruß & ...
    Lächle heut, morgen wird's schlimmer !!!

    Buch lesen | Bitte VB Tags benutzen - was ist damit gemeint? |
    Würd fast sagen, das gehört in die Source Code Ecke^^
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    VB.NET-Quellcode

    1. Function isTime(ByVal zuPruefenderString As String) As Boolean
    2. If IsDate(zuPruefenderString) = False Then Exit Function
    3. Return DateTime.Parse(zuPruefenderString).Date = Date.Today.Date
    4. End Function


    Date.Today.Date ...
    Wo wird dir da eine "Zeit" genannt? Es gibt auch Datentypen dafür, die du mit Date zusammenarbeiten lassen kannst... ;)

    PS: Zwei Zeilen weniger... die Unnötig waren und die Übersicht erschwert haben teilwese.

    Deine erste Condition sollte auch False zurücklifern und nicht einfach "nichts" zurück liefern. Du solltest da auch eine Intellisece Warnung haben... Weiß aber nicht genau bei Exit Function

    Kagurame schrieb:

    Wo wird dir da eine "Zeit" genannt?

    Da wird mir keine Zeit genannt. Kommt im String eine Zeit, dann wird beim Parse das heutige Datum davor gesetzt. Somit ist heute = heute. Nun weiß ich, dass es eine Zeit ist. Kommt ein Datum, so bleibst es bei diesem & nun ist Datum <> heute.

    @xtts02: kann Dir nicht recht folgen
    Gruß & ...
    Lächle heut, morgen wird's schlimmer !!!

    Buch lesen | Bitte VB Tags benutzen - was ist damit gemeint? |

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dolce“ ()

    dolce schrieb:

    kann Dir nicht recht folgen
    Wir sind hier im Hauptforum, da werden dererlei Kleinigkeiten manchmal vorausgesetzt.

    VB.NET-Quellcode

    1. Dim d As DateTime
    2. Dim b As Boolean = DateTime.TryParse("8.6.2012", d)
    3. If b Then
    4. MessageBox.Show(d.ToShortDateString)
    5. End If
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    dolce schrieb:

    @xtts02 kann Dir nicht recht folgen

    Die TryParse-Methode liefert einen Boolean-Wert zurück, der angibt, ob die angegebene Zeichenkette zum Datentypen Date konvertieren (parsen) lässt.

    VB.NET-Quellcode

    1. Dim input As String = "30.02.2012"
    2. If Date.TryParse(input, New Date) Then
    3. Debug.Print("Zeichenkette '" & input & "' ist ein Datum!")
    4. Else
    5. Debug.Print("Zeichenkette '" & input & "' ist kein Datum!")
    6. End If

    dolce schrieb:

    nur kann ich Euch beim Umsetzungsgedanken nicht folgen

    Ersetze

    VB.NET-Quellcode

    1. Function isTime(ByVal zuPruefenderString As String) As Boolean
    2. Dim istZeit As Boolean = False
    3. If IsDate(zuPruefenderString) = False Then Exit Function
    4. If DateTime.Parse(zuPruefenderString).Date = Date.Today.Date Then istZeit = True
    5. Return istZeit
    6. End Function
    durch

    VB.NET-Quellcode

    1. Function isTime(ByVal zuPruefenderString As String) As Boolean
    2. Dim d As DateTime
    3. Return DateTime.TryParse(zuPruefenderString, d)
    4. End Function
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Doofe Frage am Rande... beinhaltet DateTime nicht auch das Datum?
    Wenn ja, erkennt er dann 1:12 immernoch als Uhrzeit`?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    dolce schrieb:

    nur kann ich Euch beim Umsetzungsgedanken nicht folgen

    Wozu nochmal extra eine Funktion schreiben, wenn .Net Framework schon eine für diesen Zweck bereitstellt. (zumal Du in deiner Funktion doch die Parse-Methode verwendest)

    @MemoAnMichSelbst
    Date bzw. DateTime beinhaltet immer Datum und Uhrzeit
    Die TryParse-Methode nimmt bei fehlendem Datum das aktuelle Datum
    Bei '1:12' würde TryParse '08.06.2012 01:12:00' zurückliefern.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „xtts02“ ()

    MemoAnMichSelbst schrieb:

    beinhaltet DateTime nicht auch das Datum?

    VB.NET-Quellcode

    1. Dim d As DateTime
    2. Dim b As Boolean = DateTime.TryParse("8.6.2012 14:12:39", d)
    3. If b Then
    4. MessageBox.Show(d.ToString)
    5. End If
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Irgendwie hatte ich in dem anderen Thread eigentlich an was anderes gedacht ...

    VB.NET-Quellcode

    1. Private Function Dates(s As String) As List(Of DateTime)
    2. Dim spl() = s.Split(" "c)
    3. Dim l As New List(Of DateTime)
    4. Dim datepart As DateTime = Date.Parse(spl(0)).Date
    5. Dim ts As TimeSpan, d As Date
    6. For i = 1 To spl.Count - 1
    7. If TimeSpan.TryParse(spl(i), ts) Then
    8. l.Add(datepart.Add(ts))
    9. ElseIf Date.TryParse(spl(i), d) Then
    10. datepart = d.Date
    11. Else
    12. Throw New System.ArgumentException("invalif input")
    13. End If
    14. Next
    15. Return l
    16. End Function
    17. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    18. Dim test As String = "12.11.2011 17:30:45 17:55:12 18:32:19 13.11.2011 09:20:00 11:33:44 17.11.2011 14:25:12"
    19. Dim k = Dates(test)
    20. End Sub
    Okay! Soweit klar & auch schon festgestellt.
    Dann komm ich aber mit RFGs Code nicht weiter, True bei Datum und Zeit. Ich brauch ja nur die Zeit.

    xtts02 schrieb:

    TryParse-Methode nimmt bei fehlendem Datum das aktuelle Datum
    macht Parse auch

    @pico: kurz schnauf ... gut, müsste ich verstanden haben - aber ich brauch nicht die Zeiten, sondern es soll in meinen Programm was passieren (das funktioniert auch), wenn eine Zeit erkannt wurde.

    Ich denk die Kurzvariante ;) meines UrsprungsCode ist das, was mir das nötige Ergebnis liefert.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Function isTime(ByVal zuPruefenderString As String) As Boolean
    2. If IsDate(zuPruefenderString) = False Then Exit Function
    3. Return DateTime.Parse(zuPruefenderString).Date = Date.Today.Date
    4. End Function


    evtl. noch Verbesserungsvorschläge?
    DANKE bis hierher :thumbsup: :!:
    Gruß & ...
    Lächle heut, morgen wird's schlimmer !!!

    Buch lesen | Bitte VB Tags benutzen - was ist damit gemeint? |

    dolce schrieb:

    Dann komm ich aber mit RFGs Code nicht weiter
    Was ist daran unklar?
    Dass in einer Instanz Datum und Uhrzeit gehandelt werden?
    Wo liegt da der Unterschied?
    Doch nur in der Formatierung des Resultats.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ohuuu mannnnnn
    manchmal steht man aber auch auf der Bremse
    @RFG: Sorry!!! nu hab ich's --- manchmal komm ich nicht drauf worauf ihr hinaus wollt; für euch trivial - für mich ähh ... ;(
    pico hat den Freitagsrost entfernt

    Ich dank Euch :thumbsup:
    Gruß & ...
    Lächle heut, morgen wird's schlimmer !!!

    Buch lesen | Bitte VB Tags benutzen - was ist damit gemeint? |

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „dolce“ ()