vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
nächste volle Stunde ermitteln 
Autor: Marty**
Datum: 31.07.22 11:01

Hallo,

wie kann ich die nächste volle Stunde ermitteln, und einen Countdown dazu erstellen ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: nächste volle Stunde ermitteln 
Autor: sv00010
Datum: 31.07.22 20:25

Mit DateTime.Now das aktuelle Datum/Zeit herausfinden.
Dann mit DateTime.AddHours(1) eine Stunde dazu addieren und einer neuen DateTime-Variable zuweisen.
Dann im neuen DateTime die Minuten, Sekunden, Millisekunden alle auf 0 setzen.
Danach dann mit DateTime.Subtract vom Datum mit der addierten einen Stunde usw., das aktuelle Datum abziehen, welches mit DateTime.Now ermittelt wurde.
Zum Schluss dann noch das Ergebnis der Subtraktion in Minuten und Sekunden usw. umwandeln.

Beitrag wurde zuletzt am 31.07.22 um 20:27:32 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: nächste volle Stunde ermitteln 
Autor: Manfred X
Datum: 01.08.22 10:34

Hallo!

Eventuell könnte man den Countdown in einem eigenen Thread laufen lassen.

Public Class frmCountdown
 
    Dim lblCountdown As New Label With
        {.Parent = Me, .Width = 200, .Left = 10, .Top = 10, .BackColor = _
          Color.White}
 
    'Starten und Stoppen des CountDown
    Dim WithEvents btnstart As New Button With
        {.Parent = Me, .Left = 210, .Width = 100, .Top = 10, .Text = "Start"}
    Dim running As Boolean = False
 
    'Delegate für das Setzen der Labelanzeige aus dem Hintergrund-Thread
    Delegate Sub DelIntInt(mm As Integer, ss As Integer)
 
    Private Sub btnstart_Click(sender As Object, e As EventArgs) Handles _
      btnstart.Click
        running = Not running
        If running Then
            'Hintergrund-Thread starten
            btnstart.Text = "Stop"
            Dim th As New Threading.Thread(AddressOf countdown)
            th.Start()
        Else
            btnstart.Text = "Start"
            lblCountdown.Text = ""
        End If
    End Sub
 
 
    Private Sub countdown()
 
        Do
            Dim mm, ss As Integer
            GetMMSS(mm, ss)
            lblCountdown.Invoke(New DelIntInt(AddressOf SetCountDown), mm, ss)
            'Hintergrund-Thread für eine Sekunde anhalten
            Threading.Thread.Sleep(1000)
        Loop While running 'Thread läuft bis zur Betätigung der Stop-Taste
 
    End Sub
 
 
    Private Sub SetCountDown(mm As Integer, ss As Integer)
 
        lblCountdown.Text = mm.ToString("00") & ":" & ss.ToString("00")
 
    End Sub
 
 
    Private Function GetMMSS(ByRef mm As Integer, ByRef ss As Integer)
 
        Dim dt As DateTime = DateTime.Now.AddHours(1)
        Dim dt2 As New DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, 0, 0, 0) _
          'nächste volle Stunde
        Dim ts As TimeSpan = (dt2 - DateTime.Now) 'aktuelle Differenz zur 
        ' nächsten vollen Stunde
        mm = ts.Minutes : ss = ts.Seconds 'Rückgabe
    End Function
 
End Class
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: nächste volle Stunde ermitteln 
Autor: minimalist
Datum: 01.08.22 10:48

Kannst vielleicht auch so machen:

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles _
  Button4.Click
        Dim thisHour = DateTime.Now.TimeOfDay.Hours
        TextBox5.Text = thisHour 'jetzt stunde
        TextBox6.Text = thisHour + 1 ' nächste stunde
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: nächste volle Stunde ermitteln 
Autor: Manfred X
Datum: 01.08.22 11:00

Hallo!

Man muss Zeitpunkte addieren bzw. subtrahieren (Datum und Uhrzeit - DateTime).
Wenn man einfach eine Stunde direkt addiert, gibt es beim Tageswechsel Probleme.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2022 [email protected] Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel