Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB5, VB6 | 23.07.02 |
Zeit-Differenz berechnen Für viele User ein Problem: das Berechnen der Differenz zweier Zeitangaben. Aber nicht mehr lange ;-) | ||
Autor: Dieter Otter | Bewertung: | Views: 70.813 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Viele User haben mit dem Berechnen der Zeitdifferenz zweier Uhrzeitangaben enorme Probleme. Dabei stellt uns Visual Basic doch sehr gute und vielseitige Datums- und Zeitfunktionen zur Verüfung.
Für das Berechnen der Zeitdifferenz zweier Uhrzeiten nimmt am besten die DateDiff-Funktion. Zu beachten ist hierbei - und genau das wissen viele User nicht - dass man für die Berechnung der Zeitdifferenz auch immer ein gültiges Datum mitangeben muss. Sollen z.B. die vergangenen Minuten zwischen 11:43 Uhr und 16:44 Uhr ausgerechnet werden, dann geht das so:
Dim lngMin As Long Dim sDate As String sDate = Format$(Now, "m-d-yy") lngMin = DateDiff("n", CDate(sDate + " 11:43"), _ CDate(sDate + " 16:44"))
Als Ergebnis bekommen wir den Wert 301, was 5 Stunden und 1 Minute entspricht. Also alles korrekt.
Jetzt kann es aber durchaus vorkommen, dass als zweite Zeitangabe eine Uhrzeit nach 0:00 Uhr vorliegt - z.B. 01:44. Würde man die Zeitdifferenz mit obigen Code berechnen, würde man als Ergebnis -599 bekommen. Also nicht korrekt.
Demnach müssen wir diesen Fall noch zusätzlich abfragen:
Dim lngMin As Long Dim lngStd As Long Dim sTime1 As String Dim sTime2 As String sTime1 = "11:23" sTime2 = "01:44" ' Zeitdifferen lässt sich nur berechnen, wenn man ' auch ein gültiges Datum mit angibt Dim sDate1 As String Dim sDate2 As String sDate1 = CDate(Format$(Now, "m-d-yy")) ' Wenn sTime2 < sTime1 sDate2 = DateAdd("d", IIf(sTime2 < sTime1, 1, 0), sDate1) ' Zeit-Differenz in Minuten lngMin = DateDiff("n", CDate(sDate1 & " " & sTime1), _ CDate(sDate2 & " " & sTime2)) ' Und jetzt ins Format hh:nn umwandeln lngStd = Int(lngMin / 60) lngMin = lngMin - (lngStd * 60) MsgBox "Zeit-Differenz: " & _ Format$(lngStd, "00") & ":" & Format$(lngMin, "00")