vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Datum/Zeit und Timer · Datums- und Zeit-Funktionen   |   VB-Versionen: VB2005, VB200828.05.09
Zeit-Differenz berechnen

Für viele User ein Problem: das Berechnen der Differenz zweier Zeitangaben. Aber nicht mehr lange ;-)

Autor:   Dieter OtterBewertung:  Views:  21.656 
www.tools4vb.deSystem:  Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Viele User haben mit dem Berechnen der Zeitdifferenz zweier Uhrzeitangaben enorme Probleme. Dabei stellt uns das .NET Framework doch sehr gute und vielseitige Datums- und Zeitfunktionen zur Verüfung.

Für das Berechnen der Zeitdifferenz zweier Uhrzeiten nimmt am besten ein TimeSpan-Objekt.

' zwei Uhrzeiten festlegen
Dim sTime1 As String = "11:43"
Dim sTime2 As String = "16:44"
 
' Uhrzeiten in TimeSpan-Objekte überführen
Dim time1 As TimeSpan = TimeSpan.Parse(sTime1)
Dim time2 As TimeSpan = TimeSpan.Parse(sTime2)
 
' Zeitdifferenz in Minuten berechnen
Dim nMin As Integer = 0
With time2.Subtract(time1)
  nMin = .Hours * 60 + .Minutes
End With
 
' Ausgabe der Zeit-Differenz
MsgBox("Die Differenz beträgt " & CStr(nMin) & " Minuten")

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.

In diesem Fall braucht man aber einfach nur einen Tag (umgerechnet in Minuten) hinzuaddieren und schon stimmt das Ergebnis wieder.

''' <summary>
''' Ermittelt die Zeit-Differenz zweier Uhrzeiten
''' </summary>
''' <param name="sTime1">1. Zeitangabe</param>
''' <param name="sTime2">2. Zeitangabe</param>
''' <returns>Differenz in Minuten</returns>
Public Function TimeDiff(ByVal sTime1 As String, ByVal sTime2 As String) As Integer
  ' Uhrzeiten in TimeSpan-Objekte überführen
  Dim time1 As TimeSpan = TimeSpan.Parse(sTime1)
  Dim time2 As TimeSpan = TimeSpan.Parse(sTime2)
 
  ' Zeitdifferenz in Minuten berechnen
  Dim nMin As Integer = 0
  With time2.Subtract(time1)
    nMin = .Hours * 60 + .Minutes
 
    ' Falls negativ, 24 Stunden hinzuaddieren
    If nMin < 0 Then nMin += 24 * 60
  End With
 
  Return (nMin)
End Function

Um den Rückgabewert, also die Zeit-Differenz in Minuten, im Format Stunde:Minute anzuzeigen, folgende Codezeile verwenden:

' Zeit-Differenz in Minuten
Dim nMin As Integer = TimeDiff("11:43", "16:44")
 
' Zeit-Differenz formatiert ausgeben
Dim sTime As String = New TimeSpan(0, nMin, 0).ToString.Substring(0, 5)
 
MsgBox(sTime)



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2019 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.