Hallo,
vielleicht könnt ihr mir kurz auf die Sprünge helfen.
Ich will möchte verschiedene TimeSpans im 3-Schichtbetrieb berechnen. Dabei immer die Zeit vom Schichtbeginn bis zur aktuellen Minute. Startzeit ist quasi immer 06:00, 14:00 und 22:00 Uhr.
Das Problem ist, wenn es z.B. 00:45 Uhr ist und ich auf 22 Uhr zurück rechne, dann hätte ich theoretisch 165 Minuten, ausgegeben werden jedoch -1275.
Der Grund ist mir bewusst, da er nicht weiß, dass ich 22 Uhr vom Vortag meine und er voraus berechnet.
Muss ich nun zwingend mit Date rechnen oder gibt es eine einfacheren Weg?
vielleicht könnt ihr mir kurz auf die Sprünge helfen.
Ich will möchte verschiedene TimeSpans im 3-Schichtbetrieb berechnen. Dabei immer die Zeit vom Schichtbeginn bis zur aktuellen Minute. Startzeit ist quasi immer 06:00, 14:00 und 22:00 Uhr.
Das Problem ist, wenn es z.B. 00:45 Uhr ist und ich auf 22 Uhr zurück rechne, dann hätte ich theoretisch 165 Minuten, ausgegeben werden jedoch -1275.
Der Grund ist mir bewusst, da er nicht weiß, dass ich 22 Uhr vom Vortag meine und er voraus berechnet.
Muss ich nun zwingend mit Date rechnen oder gibt es eine einfacheren Weg?
VB.NET-Quellcode
- 'Schichtzeiten festlegen (nicht verwendet)
- Dim jetzt = DateTime.Now
- Dim FS_S = jetzt.Date.AddHours(6).AddMinutes(0) 'Start Frühschicht
- Dim FS_E = jetzt.Date.AddHours(13).AddMinutes(59) 'Ende Frühschicht
- Dim SS_S = jetzt.Date.AddHours(14).AddMinutes(0) 'Start Spätschicht
- Dim SS_E = jetzt.Date.AddHours(21).AddMinutes(59) 'Ende Spätschicht
- Dim NS_S = jetzt.Date.AddHours(22).AddMinutes(0) 'Start Nachtschicht
- Dim NS_E = jetzt.Date.AddHours(5).AddMinutes(59) 'Ende Nachtschicht
- 'Uhrzeiten festlegen
- Dim sTime1 As String = "06:00"
- Dim sTime2 As String = "14:00"
- Dim sTime3 As String = "22:00"
- Dim sTimeNow As String = DateTime.Now.Hour & ":" & DateTime.Now.Minute
- 'Uhrzeiten in TimeSpan-Objekte überführen
- Dim Time1 As TimeSpan = TimeSpan.Parse(sTime1)
- Dim Time2 As TimeSpan = TimeSpan.Parse(sTime2)
- Dim Time3 As TimeSpan = TimeSpan.Parse(sTime3)
- Dim TimeNow As TimeSpan = TimeSpan.Parse(sTimeNow)
- Dim TimeDummy As TimeSpan
- 'Chechbox für Schicht
- Select Case Date.Now.Hour
- Case 6 To 13
- TimeDummy = Time1
- chkF1.Checked = True
- chkF2.Checked = False
- chkF3.Checked = False
- Case 14 To 21
- TimeDummy = Time2
- chkF1.Checked = False
- chkF2.Checked = True
- chkF3.Checked = False
- Case 22 To 23
- TimeDummy = Time3
- chkF1.Checked = False
- chkF2.Checked = False
- chkF3.Checked = True
- Case 0 To 5
- TimeDummy = Time3
- chkF1.Checked = False
- chkF2.Checked = False
- chkF3.Checked = True
- End Select
- 'Zeitdifferenz in Minuten berechnen
- Dim nMin As Integer = 0
- With TimeNow.Subtract(TimeDummy)
- nMin = .Hours * 60 + .Minutes
- End With