Zählen auf max 60 gleich 1 Stunde...

  • VB.NET

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

    Zählen auf max 60 gleich 1 Stunde...

    Hallo leute,

    hänge hier irgendwie fest. Hier mal ein eindruck:



    Ich habe sowas wie ein Kontorechner Programmiert und will da die Stunden berechnen. Man kann Zeiten hinzufügen, wie viele Stunden man gearbeitet hat. Habe da schon was keines fertig so das wenn er bei 60 Minuten ist die Stunde um 1 erhöt. Was irgendwie nicht ganz klappt.

    Wenn man beim NumericUpDown2 z.b. 40 Minuten überstunden einträgt und das dann übernimmt zeigt er ja Oben wunderbar 0:40 an ....

    nur addiere ich jetzt 30 Minuten hinzu zeigt er erst 0:70 an. Klicke ich jetzt nochmal drauf dann prüft er es und macht stunde +1 ...

    Wie bekomme ich das hin das er bei klick nicht über 59 kommt und dann bei 60 immer Stunde +1 macht.

    Danke für eure Poasts

    VB.NET-Quellcode

    1. Dim AZKStunde As Decimal
    2. Dim AZKMinute As Decimal
    3. Private Sub Stundenrechner_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. lbl_AZK.Text = Format(AZKStunde & ":" & AzkMinute).ToString()
    5. End Sub
    6. Private Sub btn_uebernehmenAZK_Click(sender As Object, e As EventArgs) Handles btn_uebernehmenAZK.Click
    7. AZKStunde += NumericUpDown1.Value
    8. AZKMinute += NumericUpDown2.Value
    9. lbl_AZK.Text = Format(AZKStunde & ":" & AZKMinute).ToString()
    10. If AZKMinute > 58 Then
    11. AZKStunde += 1
    12. AZKMinute = -1
    13. End If

    @VBHunter Arbeite mit TimeSpan da hast Du alle erforderlichen Properties für Summen, Differenzen, Ausgabe-Formatierung.
    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!
    Was tust Du? Nutz die richtigen Datentypen und das ganze ist schnell gelöst:

    VB.NET-Quellcode

    1. Public Class FrmMain
    2. Dim AZKZeit As TimeSpan
    3. Private Sub Stundenrechner_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    4. ShowCurrentTime()
    5. End Sub
    6. Private Sub ShowCurrentTime()
    7. lbl_AZK.Text = AZKZeit.ToString
    8. End Sub
    9. Private Sub btn_uebernehmenAZK_Click(sender As Object, e As EventArgs) Handles btn_uebernehmenAZK.Click
    10. AZKZeit = AZKZeit.Add(New TimeSpan(CInt(NumericUpDown1.Value), CInt(NumericUpDown2.Value), 0))
    11. ShowCurrentTime()
    12. End Sub
    13. End Class

    (Date durch TimeSpan ersetzt :whistling: )
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Date durch TimeSpan ersetzt
    In Zeile #3 kannst du ein DateTime (Zeitpunkt) initialisieren...
    In Zeile #13 berechnest du den Zeitpunk neu, indem du ein Timespan (Zeitdauer) addierst...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VB1963“ ()