Wie kann ich die Werte von zwei DateTimePickers mit Custom Format miteinander subtrahieren?
Hey, ich programmiere aktuell etwas in Visual Basic .NET, wo ich den Value von zwei DateTimePicker subtrahieren und als Sekunden in einem Label als String anzeigen möchte.
DateTimePicker1.Value = DateTime.Now
Dim value1 As DateTime = DateTimePicker1.Value
Dim value2 As DateTime = DateTimePicker2.Value
Dim timeSpan As TimeSpan = value1 - value2
Label1.Text = Math.Ceiling(timeSpan.TotalSeconds)
Bisher hat der oben gelistete Code perfekt funktioniert, um die Differenz der beiden DateTimePicker herauszufinden und als Sekunden darzustellen.
Nun habe ich aber die DateTimePicker als Custom Format eingestellt.
DateTimePicker1.CustomFormat = "dd.MM.yyyy hh:mm:ss"
DateTimePicker2.CustomFormat = "dd.MM.yyyy hh:mm:ss"
Und jetzt funktioniert mein Code nicht mehr und es ergibt sich die Fehlermeldung:
System.FormatException: "Die Eingabezeichenfolge hat das falsche Format."
wenn ich versuche die Differenz berechnen zu lassen.
Hat jemand eine Lösung? Ich wäre sehr dankbar!
2 Antworten
Also wird einem Picker ein invalider Wert übermittelt.
Was ich zunächst nicht verstehe, ist deine Manipulation der ersten DateTimePicker-Komponente. Wenn du eh nicht mit dem vom Nutzer gesetzten Wert arbeiten möchtest, dann lasse die Komponente doch direkt aus dem Spiel.
Von Interesse für dein Problem wäre nun, was du im zweiten Picker genau einträgst, um den Fehler zu reproduzieren.
PS.: Ich vermisse außerdem noch das Setzen des Format-Properties, damit das benutzerdefinierte Format vom Control auch angezeigt wird.
DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker2.Format = DateTimePickerFormat.Custom
Custom Format macht aus der DateTime Ziffer einen Text und damit ist keine Differenz mehr möglich.
Ggf dynamisch den DateTime Picker auf Default zurück und nach der Berechnung wieder ins Custom Format.
Beim Rechnen mit Datum und Uhrzeit sollte man aus meiner Sicht generell in der Dezimal-Welt bleiben und NUR für die Darstellung eine gewohnte lesbare Ansicht erzeugen.
1 Tag = 1; 12Std = 0,5 etc, etc