VB.Net-Forum - Beitragsübersicht -
ThemaV15: Datum / Uhrzeit rechnen unter Berücksichtigung von arbeitsze
Von Sven
E-Mail sveneichhorn@gmx.de
Datum 10. Dezember 2016 um 19:03:03
Frage Hallo,

Ich versuche eine Art Auftragsübersicht zu programmieren und komme nicht weiter.
Ich habe ein Datum Uhrzeit z.B 09.12.2016 20:00 Uhr. Jetzt weiß ich zum Beispiel dass der Auftrag noch 3 Stunden mit aktueller
Produktivität läuft. Jetzt soll wenn ich 09.12.2016 20:00 Uhr mit 3 Stunden addiere 12.12.2016 7:00 Uhr rauskommen, da die
Arbeitszeit Montag bis Freitag von 6:00 Uhr bis 22:00 Uhr geht. Habt ihr eine Idee? Wisst ihr was ich meine ? Gruß Sven
Antwort:
Von Nico
E-Mail nico.schertler@studentpartners.de
Datum 11. Dezember 2016 um 23:09:25
Antwort Hallo Sven,

du kannst z.B. zur aktuellen Zeit soviel addieren, dass du maximal ans Ende der Arbeitszeit kommst. Und danach direkt soviel bis zum nächsten Arbeitsbeginn. In etwa so:
Class Arbeitszeiten
Public Property Start As Double 'In Stunden
Public Property Ende As Double 'In Stunden

Public Sub New(start As Double, ende As Double)
Me.Start = start
Me.Ende = ende
End Sub
End Class

'Definiert, welche Arbeitszeiten an welchem Tag gültig sind (beginnend mit Sonntag)
Dim zeiten() As Arbeitszeiten = {
New Arbeitszeiten(0, 0),
New Arbeitszeiten(6, 22),
New Arbeitszeiten(6, 22),
New Arbeitszeiten(6, 22),
New Arbeitszeiten(6, 22),
New Arbeitszeiten(6, 22),
New Arbeitszeiten(0, 0)}

'Ändert datum so ab (falls notwendig), dass es nach Arbeitsbeginn des jeweiligen Tages liegt
Sub VersichereNachArbeitsbeginn(ByRef datum As DateTime)
'Gehe zu Arbeitsbeginn
If (datum.TimeOfDay.TotalHours < zeiten(datum.DayOfWeek).Start) Then
datum = datum.AddHours(zeiten(datum.DayOfWeek).Start - datum.TimeOfDay.TotalHours)
End If
End Sub

Public Function AddiereArbeitszeit(datum As DateTime, stunden As Double) As DateTime

VersichereNachArbeitsbeginn(datum)

While datum.TimeOfDay.TotalHours + stunden > zeiten(datum.DayOfWeek).Ende
'Springe zum nächsten Tag wenn notwendig
stunden -= Math.Max(0, zeiten(datum.DayOfWeek).Ende - datum.TimeOfDay.TotalHours)
datum = datum.AddHours(24 - datum.TimeOfDay.TotalHours)
VersichereNachArbeitsbeginn(datum)
End While

datum = datum.AddHours(stunden)

Return datum
End Function

Sub Main()
Dim datum As New DateTime(2016, 12, 9, 23, 0, 0)
Dim ende = AddiereArbeitszeit(datum, 3)
Console.WriteLine(ende)
End Sub
[ Antwort schreiben | Zurück zum VB.Net-Forum | Forum-Hilfe ]
Antworten
V15: Datum / Uhrzeit rechnen unter Berücksichtigung von arbeitsze - Sven 10. Dezember 2016 um 19:03:03
Re: Datum / Uhrzeit rechnen unter Berücksichtigung von ... - Nico 11. Dezember 2016 um 23:09:25

Ihre Antwort
(Nick-)Name   Wichtige Informationen zur Namensangabe
E-Mail (opt.)  Wichtige Informationen zur Angabe einer eMail-Adresse
Thema   Wichtige Informationen zur Angabe eines Themas
Betrifft (IDE)  VB 2015
Ihre Antwort
Smilies
Mehr...
FettKursivUnterstrichen   Übersicht der Tipp-KürzelÜbersicht der Projekt-KürzelÜbersicht der Bücher-Kürzel 
Homepage
Titel
Root-Smilies              
             
             
[ Zurück zum VB.Net-Forum | Forum-Archiv | Forum-Hilfe | Chat ]

Zum Seitenanfang

Startseite | VB-/VBA-Tipps | Projekte | Tutorials | API-Referenz | Komponenten | Bücherecke | Gewinnspiele | VB.Net | VB/VBA-Forum | DirectX | DirectX-Forum | Chat | Ausschreibungen | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 13. Dezember 2015