Nachtstunden erkennen?

  • VB.NET
  • .NET (FX) 4.0

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Nachtstunden erkennen?

    Hallo Community,

    nach Ewigkeiten habe ich mal wieder etwas Luft zum Programmieren. Und ja ich muss gestehen das ich erst mal wieder Warm laufen muss damit ^^

    Aber zu meinen Problem mit dem ich auch schon Google und Co. Belästigt habe.
    Ich habe folgende Parameter (handelt sich um Uhrzeiten) 21:00 bis 05:00 ich möchte nun die Zeitspanne zwischen diesen beiden Zeiten ausgeben lassen. Nun das ist noch nicht das Problem, allerdings wird der Nachtzuschlag nur von 22:00 bis 05:00 gezahlt.

    Ich versuche also krampfhaft meinem Programm bei zu bringen, zu erkennen das er 1 Stunde Normal abrechnet und 7 Stunden mit Nachtschicht Zulage.

    VB.NET-Quellcode

    1. Dim firstDate As Date
    2. Dim secondDate As Date
    3. firstDate = CDate(datum1.Value & " " & TextBox1.Text) 'Datum und Uhrzeit im format 01.01.2000 00:00
    4. secondDate = CDate(datum2.Value & " " & TextBox2.Text) 'Datum und Uhrzeit im format 01.01.2000 00:00
    5. Dim ergeb As String = DateDiff(DateInterval.Minute, firstDate, secondDate)
    6. MsgBox(Math.Round(ergeb / 60, 2))) 'Ausgabe in Industriestunden


    das oben errechnet die verstrichene Zeit zwischen den Zeitangaben funktioniert auch Prima. Aber wie erkenne ich nun das diese Zeit in die Nachtschicht Zulage fällt? (22:00 bis 05:00) Bin gerade irgendwie ziemlich ratlos und für jede Hilfe Dankbar


    MfG

    Wejherowo112
    1. DateTime
    2. DateTime.TryParse
    3. TimeSpan

    Zu deinem Problem hier ein bisschen Pseudo:

    Quellcode

    1. DateTime start = 21:00
    2. DateTime end = 03:00
    3. DateTime nachtStart = 22:00
    4. TimeSpan normal = nachtStart - start
    5. TimeSpan total = end - start
    6. if(normal <= 0)
    7. normal = 0
    8. total = total - normal
    9. int summe = (total * 15€) + (normal * 10€)

    Könnte evtl. ein Dreher enthalten, musst du noch testen ;) selbiges machst du für die Endzeit nur umgekehrt ...

    PS: hier noch als "papier" rechnung

    Quellcode

    1. 01.01.2000 23:00 bis 02.01.2000 03:00
    2. 01.01.2000 22:00 - 01.01.2000 23:00 = -1
    3. 02.01.2000 03:00 - 01.01.2000 23:00 = 4
    4. -1 ist negativ also auf 0 setzten
    5. 4 - 0 = 0
    6. 4 stunden Nachtzuschlag | 0 Stunden normal
    7. 01.01.2000 21:00 bis 02.01.2000 04:00
    8. 01.01.2000 22:00 - 01.01.2000 21:00 = 1
    9. 02.01.2000 04:00 - 01.01.2000 21:00 = 7
    10. 1 ist positiv also so lassen
    11. 7 - 1 = 6
    12. 6 stunden Nachtzuschlag | 1 Stunden normal

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „slice“ ()

    wejherowo112 schrieb:

    mein Glück versuchen
    Ich geh mal davon aus, dass Du den feinen Unterschied zwischen 12 Uhr und 12 Stunden verinnerlicht hast.
    Rechne mit Datümmern und Zeitspannen: DateTime und TimeSpan. Da kann eigentlich gar nix passieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!