Uhrzeit und datum vergleichen

  • VB.NET

Es gibt 47 Antworten in diesem Thema. Der letzte Beitrag () ist von MediaXtremely.

    Uhrzeit und datum vergleichen

    Hallo liebe Leute,

    ich möchte gerne die Uhrzeit und das Datum vergleichen.
    Die Uhrzeit und das Datum stehen in einer Textbox. Jetzt möchte ich wenn das Programm gestartet wird das er die Uhrzeit und das Datum vergleicht.

    Ist die Uhrzeit und das Datum älter als die aktuelle Uhrzeit und Datum, dann MSGBOX mit text.(Die Uhrzeit und Datum sind alt.)

    Weiß jemand wie es geht???

    Danke schon mal im voraus...


    Liebe Grüße Thorsten
    Hey,

    Quick&Dirty-Beispiel mit einem vorgegebenen Vergleichs-Datum:

    VB.NET-Quellcode

    1. Dim AktuellesDatum As Date = System.DateTime.Now
    2. Dim VergleichsDatum As Date = New System.DateTime(2012, 2, 7, 12, 0, 0) ' 07.02.2012 12:00:00
    3. If AktuellesDatum <> VergleichsDatum Then
    4. MessageBox.Show("Unterschied")
    5. End If

    Gruß, Manschula
    Es gibt eine DateTime.ParseExact funktion. Schau dir die mal an.
    Damit kann man Strings nach einen bestimmten Schema in DateTime Objekte Konvertieren, welche du dann so verwenden kannst wie es Manschula gezeigt hat.

    lg.
    lg.

    LucaWelker
    Du musst Datenpräsentation und Datenbearbeitung voneinander trennen.

    Ein Label dient ausschließlich der Präsentation. Lade die zu bearbeitende/vergleichende Zeit/Datum in eine Vaiable und nutze diese für den Vergleich. Anschließend setzt du die die Variable mit der notwendigen Formatierung ins Label. Damit hast du nur 1 Formatierung
    Es ist unnötig und schlecht lesbar, wenn du die Zeit ins Label reinfrickelst und dann wieder zurückfrickelst für den Vergleich.
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    DateTime ist ein Datentyp, der Vergleichsoperatoren besitzt: =, <>, >, < und so.
    Nutze sie.
    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).
    VB-Fragen über PN / Konversation werden ignoriert!
    Ich mache es im Moment so:

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Label4.Text = TimeString
    3. Label6.Text = DateString
    4. End Sub


    VB.NET-Quellcode

    1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    2. If Label6.Text And Label4.Text > InStr(TextBox2.Text, Label6.Text & Label4.Text) Then
    3. TextBox2.Text = TextBox2.Text.Replace(Label6.Text & Label4.Text, " wurde nicht angezeigt und wurde verpasst.")
    4. End If
    5. End Sub


    Da kommt immer der Fehler mit Type Double! Also Zeichen wie Doppelpunkt ( : ) nimmt er nicht an.

    Wie kann ich das machen???
    Gruß Thorsten
    Also Manschula und LucaWelker haben's Dir doch aufgezeigt. Und da machst Du so'n Quatsch mit Labels vergleichen.
    Das wird nur unübersichtlich und zum Schluss auch noch unverständlich für Dich.

    Ich kann Dir nur empfehlen Dir die DateTime Geschichte mal in Ruhe anzuschauen. Da gibts so schöne Möglichkeiten.
    Überdenk Deinen Code nochmal. Ist nicht böse gemeint.

    mfg OnkelR

    Vatter schrieb:

    Ein Label dient ausschließlich der Präsentation. Lade die zu bearbeitende/vergleichende Zeit/Datum in eine Vaiable und nutze diese für den Vergleich
    Werde ich ignoriert? Haste du dir den Post mal durchgelesen? ?( Verwende NIE, wenn es irgendwie vermeidbar ist, Steuerelemente um iwelche Werte für die spätere Verarbeitung wie Berechnungen oder Vergleiche zu speichern. Dafür gibt es Variablen (Objecte) aller möglichen Typen.

    Du holst dir in deiner Denke Wasser aus der Leitung, frierst es ein, damit du es mit nem Nudelsieb transportieren kannst und taust es anschließend in einem Topf wieder auf, um Kartoffeln zu kochen. Merkst du, was das für Strom kostet? Geh gleich mit dem Topf zum Wasserhahn! 8o

    1. Deklariere dir Variablen vom Typ DateTime global (außerhalb deiner Subs).
    2. Weise den Variablen in einer Sub die Werte zu. (DateTime1=jetze, DateTime2=Weckzeit)
    3. Zeige die Datumse und Uhrzeiten in der gewünschten Formatierung in deinen Labels an (sieh dir dazu DateTimexy.toShortDateString usw an.)
    4. Vergleiche die variablen DateTime1 und DateTime2 miteinander "If DateTime1 > DateTime2" und leite davon deine gewünschte Funktion ab. (in diesem Fall Wecker klingelt, wenn jetze später als Weckzeit is )

    Wie gesagt: Trenne die Verarbeitung der Daten von deren Präsentation. Was du da machst, begreifst du in einem Monat schon nicht mehr, weil du hin- und her konvertierst.

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:

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

    Sorry aber ich verstehe das nicht...

    Ich möchte für mich selber einen Terminkalender programmieren, der mir sagt wenn ein Termin ansteht und wenn ich einen verpasse.

    Ich schreibe die Termine in eine Textbox rein also Zeile für Zeile.
    Ich bekomme es hin, wenn der Termin mit der aktuellen Zeit übereinstimmt, aber ich möchte auch, dass er mir sagt das ich ein Termin verpasst habe.

    Kann ich ein Beispiel bekommen, weil ich verstehe das nicht mit der Zeit und Datum, also größer oder kleiner...

    Thorsten
    Eigentlich wurde schon sehr viel gesagt. Nun, mehr als ein Beispiel kann ich dir nicht geben.
    Eigentlich ist es mehr als selbsterklärend. mit den Zeichen "<=>" kannst du halt alle Fälle die du brauchst realisieren.

    VB.NET-Quellcode

    1. Dim Datum As Date = CDate("12.12.2011 15:00")
    2. Select Case True
    3. Case DateTime.Now = Datum
    4. MsgBox("Datum stimmt genau")
    5. Case DateTime.Now > Datum
    6. MsgBox("Datum abgelaufen")
    7. Case DateTime.Now < Datum
    8. MsgBox("Ich muss noch warten")
    9. Case Else
    10. MsgBox("Vielleicht ein falsches Datumsformat")
    11. End Selectt



    EDIT
    Formatierung
    msdn.microsoft.com/en-us/library/az4se3k1.aspx
    Genau BlackHook!!!

    In Deiner Textbox (hier: textbox_Datum1) sollte das Datum auch in 'nem gültigen Format stehen.
    z.B.:
    '09.02.2012 11:29
    '09.02.2012 11:29:22
    '09-02-2012 11:29:22

    VB.NET-Quellcode

    1. Dim VergleichsDatum As Date = CDate(textbox_Datum1.Text)
    2. Select Case True
    3. Case System.DateTime.Now = VergleichsDatum
    4. MsgBox("Datum stimmt genau")
    5. Case System.DateTime.Now > VergleichsDatum
    6. MsgBox("Datum abgelaufen")
    7. Case System.DateTime.Now < VergleichsDatum
    8. MsgBox("Ich muss noch warten")
    9. Case Else
    10. MsgBox("Vielleicht ein falsches Datumsformat")
    11. End Select
    Ja habe ich verstanden..

    Aber wie vergleiche ich das Datum und die Uhrzeit in der Textbox???
    Also, Datum und Uhrzeit werden mit Label6 und Label4 in die Textbox eingetragen.

    VB.NET-Quellcode

    1. Label4.Text = Format(Now, "HH:mm ")
    2. Label6.Text = Format(Now, "dd.MM.yyyy")
    3. Dim Datum As Date = CDate(InStr(TextBox2.Text, Label4.Text & Label6.Text))
    4. Select Case True
    5. Case DateTime.Now = Datum
    6. MsgBox("Datum stimmt genau")
    7. Case DateTime.Now > Datum
    8. MsgBox("Datum abgelaufen")
    9. Case DateTime.Now < Datum
    10. MsgBox("Ich muss noch warten")
    11. Case Else
    12. MsgBox("Vielleicht ein falsches Datumsformat")
    13. End Select


    Er sagt mir, dass ich Integer nicht in Date Konvertieren kann. Ja verstehe ich, aber wie bekomme man das hin???

    Wie kann ich Datum und Uhrzeit vergleichen, die ich mit Label6 und Label4 in die Textbox geschrieben habe???

    Thorsten

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

    Du kannst den Inhalt einer eines Lables z.B. mit DateTime.ParseExact in ein Datetimeobjekt umwandeln, schau dir doch einfach die Klasse mal bei MSDN an.
    Aber wie Vatter schon gesagt hat ist das quatsch. Warum speicherst du die Daten nicht einfach noch zusätzlich in einer Variable?!

    lg.
    lg.

    LucaWelker
    Ich weiß nicht wie das geht...

    Ich speichere ja mehrere Termine in der Textbox.

    Also:

    Aktuelle Zeit: 09.02.2012 13:30

    Termine in der Textbox:

    Termin 1 09.02.2012 12:00
    Termin 1 09.02.2012 13:00
    Termin 1 09.02.2012 14:00

    Wenn das Programm startet, soll er mir sagen ob ich einen Termin verpasst habe. Idem Fall wäre es Termin 1 und Termin 2...

    Muss ich das anders lösen oder bekommt man das auch so hin???