Zeit addieren

  • VB.NET

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von ChaosBernd.

    Zeit addieren

    Hallo,
    ich möchte folgendes Realisieren:
    In einer TextBox steht der Text: "00:00". Beim Klick auf einen Button erscheint eine InputBox und der User muss eine Zeit im Format hh:mm eingeben. Diese wird dann zu der Zeit in der TextBox dazuadiert und in die Textbox reingeschrieben. Wenn der User jetzt wieder daraufklickt, kann er wieder eine Zeit eingeben und diese wird wieder zur TextBox-Zeit dazuaddiert und ersetzt diese. Wie kann ich so etwas mit VB machen?
    Ich habe es mit diesem Code probiert:

    VB.NET-Quellcode

    1. Dim t1 As New TimeSpan((DateTime.Parse(TextBox20.Text & ":00").TimeOfDay.Ticks))
    2. Dim t2 As New TimeSpan(DateTime.Parse(InputBox("Bitte die Zeit im Format" & vbNewLine & "HH:MM" & vbNewLine & "angeben!", "Bitte Zeit eingeben", "00:00")).TimeOfDay.Ticks)
    3. Debug.Print(t1.ToString)
    4. Debug.Print(t2.ToString)
    5. t1.Add(t2)
    6. TextBox20.Text = t1.TotalHours & ":" & t1.TotalMinutes

    Doch in der TextBox steht nachher
    0:0
    obwohl ich in der InputBox
    02:01
    angegeben habe!

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

    So, nach nun mehreren Strunden fummeln und brasseln,
    habe ich immer noch nicht die perfekte lösung. das soltest du mal warten ob jemand mit Zeiten umgehen und rechnen kann.
    Aber es funktioniert nach deinen vorgaben.

    VB.NET-Quellcode

    1. Dim ErsteZeit As Date = CDate(TextBox1.Text)
    2. Dim zweites As Date = CDate(TextBox2.Text)
    3. Dim StundenErste As Integer = Nothing
    4. Dim MinutenErste As Integer = Nothing
    5. StundenErste = Microsoft.VisualBasic.Hour(ErsteZeit)
    6. MinutenErste = Microsoft.VisualBasic.Minute(ErsteZeit)
    7. Dim StundenZweite As Integer = Nothing
    8. Dim MinutenZweite As Integer = Nothing
    9. StundenZweite = Microsoft.VisualBasic.Hour(zweites)
    10. MinutenZweite = Microsoft.VisualBasic.Minute(zweites)
    11. TextBox3.Text = CStr(DateAndTime.TimeValue((StundenErste + StundenZweite) & ":" & (MinutenErste + MinutenZweite)))


    jetzt darf gelacht und gelästert werden

    ChaosBernd schrieb:

    Es geht sich doch garnicht um die differenz. Er möchte weit Zeiten addieren und das Ergebnis in Std und Minuten anzeigen.
    43:27 HH:MM

    Genau richtig!

    EDIT: Heureka

    VB.NET-Quellcode

    1. Dim t1 As New TimeSpan((DateTime.Parse(TextBox20.Text).TimeOfDay.Ticks))
    2. Dim t2 As New TimeSpan(DateTime.Parse(InputBox("Bitte die Zeit im Format" & vbNewLine & "HH:MM" & vbNewLine & "angeben!", "Bitte Zeit eingeben", "00:00")).TimeOfDay.Ticks)
    3. Dim ende As New TimeSpan
    4. ende = t1.Add(t2)
    5. TextBox20.Text = ende.TotalHours.ToString.Split(",")(0).ToString & ":" & (ende.TotalMinutes - (ende.TotalHours.ToString.Split(",")(0) * 60))

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

    alles was ich durchforstet habe, treffe ich immer auf den Type Date. und das heist nur der Type Date rechnet intern mit Zahlen deren Trennzeichen ein : (Doppelpunkt ist)
    Alles was sonst zu finden ist rechnet vieleicht mit : . jedoch als Date. und somit werden kein 48:00 Strunden angezeigt sondern 2 Tage.

    Die bleibt also nichts anderes übrig als
    deine Werte
    auseinander zureissen
    und dann mit Integer rechnen
    wieder zusammen bauen.

    sorry kein zeit, vieleicht bastel ich heute abend ein tool.