Datetime miteinander vergleichen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Datetime miteinander vergleichen

    Moin,

    ich möchte die Werte von zwei Datetimepickern mit einander vergleichen, bekomme es aber einfach nicht hin.

    Ich möchte die Werte von zwei Datetimepickern beispielhaft wie folgt abgleichen:

    VB.NET-Quellcode

    1. If Datetimepicker1.Value = Datetimepicker2.Value Then
    2. ...
    3. End if


    Wenn ich mit dem Debugger drüber laufe, bekomme ich bei beiden Datetimepickern als Wert: #12/23/2014 9:05:52 AM#

    Als Abfrageergebnis wird mir trotzalledem ein False zurückgeliefert.

    Weiß jemand woran das liegen könnte?

    mit freundlichen Grüßen
    André Werner

    aNd12121 schrieb:

    False
    Da werden ggf. Millisekunden miteinander verglichen, die aber bei DateTime.ToString() nicht ausgegeben werden.
    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!
    das einfachste wäre du würdest die .tostings miteinander vergleichen
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Naja jenachdem wie genau deine Prüfung sein muss könntest du auch .date vergleichen (nur den Tag) oder du vergleichst Stunde,Minute und Sekunde .... Den möglichkeiten sein kaum grenzen gesetzt
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    aNd12121 schrieb:

    rausbekomme
    Hab mal ein wenig gespielt, aber das ist auch nicht das Gelbe vom Ei:

    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim dt1 = DateTimePicker1.Value
    3. dt1 = dt1.AddMilliseconds(-dt1.Millisecond)
    4. Label1.Text = dt1.Millisecond.ToString
    5. Dim dt2 = DateTimePicker2.Value
    6. dt2 = dt2.AddMilliseconds(-dt2.Millisecond)
    7. Label2.Text = dt2.Millisecond.ToString
    8. Label3.Text = dt1.ToString
    9. Label4.Text = dt2.ToString
    10. If dt1 = dt2 Then
    11. MessageBox.Show("gleich")
    12. Else
    13. MessageBox.Show("nicht gleich")
    14. End If
    15. End Sub
    Welche Komponenten willst Du denn alles vergleichen?
    Datum (Y, M, D) ==> Dim dt = DateTimePicker1.Value.Date
    Zeit (H, M, S)
    Zeit ((H, M, Sm ms) ==> Dim dt = DateTimePicker1.Value.TimeOfDay
    :?:
    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!

    aNd12121 schrieb:

    Stringvergleich
    ist suboptimal.

    RodFromGermany schrieb:

    Welche Komponenten willst Du denn alles vergleichen?
    ist noch nicht beantwortet.
    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!

    VB.NET-Quellcode

    1. If DateTimePicker1.Value.Date = DateTimePicker2.Value.Date AndAlso _
    2. DateTimePicker1.Value.TimeOfDay = DateTimePicker2.Value.TimeOfDay Then
    3. End If
    4. If DateTimePicker1.Value.Date >= DateTimePicker2.Value.Date AndAlso _
    5. DateTimePicker1.Value.TimeOfDay >= DateTimePicker2.Value.TimeOfDay Then
    6. End If
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Date.Tostring ist mir iwie schmuddel - da aus einem Date einen String zu machen, weils keine Date.Align-Funktion gibt, mit der man etwa Millisekunden abschneiden kann.
    Hab ich also programmiert, aber ist natürlich Quatsch, denn mit .ToString - Stringvergleichen gehts ja auch:

    VB.NET-Quellcode

    1. Imports System.Runtime.CompilerServices
    2. Public Module DateTimeX
    3. Public Enum TimeUnit : Tick : Millisecond : Second : Hour : Day : End Enum
    4. Public _TicksPerUnit As Long() = {1, TimeSpan.TicksPerMillisecond, TimeSpan.TicksPerSecond, TimeSpan.TicksPerMinute, TimeSpan.TicksPerHour, TimeSpan.TicksPerDay}
    5. <Extension>
    6. Public Function Align(dt As Date, unit As TimeUnit) As Date
    7. Dim rest As Long = 0
    8. Dim ticks = Math.DivRem(dt.Ticks, _TicksPerUnit(unit), rest)
    9. Return dt.AddTicks(-rest)
    10. End Function
    11. Sub TestAlign()
    12. Dim dt0 = Date.Now
    13. Dim dt1 = dt0.AddTicks(123456)
    14. Dim dt2 = Align(dt1, TimeUnit.Second)
    15. Dim ts0 = dt0.TimeOfDay
    16. Dim ts1 = dt1.TimeOfDay
    17. Dim ts2 = dt2.TimeOfDay
    18. End Sub ' <-- am Haltepunkt die Timespans vergleichen
    19. End Module