VB.Net Истекшее время, используя TimerTick - формат времени - PullRequest
0 голосов
/ 13 декабря 2018

Я создал прошедшие часы реального времени, которые синхронизируются с временем компьютера и отображаются на этикетке.

Теперь я сомневаюсь, как отобразить часы в метке в формате "чч: мм: сс".

    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles Me.Load
        ElapseStartTime = DateTime.Now
        Timer1.Enabled = True
        Timer1.Interval = 1000
        Timer1.Start()
    End Sub

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
        Dim ElapsedTime = DateTime.Now.Subtract(ElapseStartTime)
        LB_Timer.Text = String.Format("{0} : {1} : {2}", ElapsedTime.Hours, ElapsedTime.Minutes, ElapsedTime.Seconds)
    End Sub

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

только я обнаружил, что это может помочь!{0: d2 }

LB_Timer.Text = String.Format("{0:d2}:{1:d2}:{2:d2}", ElapsedTime.Hours, ElapsedTime.Minutes, ElapsedTime.Seconds)
0 голосов
/ 13 декабря 2018

Поскольку DateTime.Subtract возвращает структуру TimeSpan , вы можете использовать метод TimeSpan.ToString ([Format]) для форматирования строки вывода:

Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    LB_Timer.Text = Date.Now.Subtract(ElapseStartTime).ToString("hh\:mm\:ss")
End Sub

При таргетинге на .Net Framework < FW 4.0 используйте метод без параметров, не зависящий от культуры TimeSpan.ToString().

 LB_Timer.Text = Date.Now.Subtract(ElapseStartTime).ToString().Substring(0, 8)

Из документов:

Поддержка форматирования значений TimeSpan была добавлена ​​в .NET Framework 4. Однако перегрузка метода ToString () остается нечувствительной к культуре.Его поведение остается неизменным по сравнению с предыдущими версиями .NET Framework.

...