【问题标题】:Formatting Time (HH:MM:SS)格式化时间 (HH:MM:SS)
【发布时间】:2011-10-28 17:34:35
【问题描述】:

我正在从数字起伏中获取小时、分钟和秒的值。

问题是,例如,如果时间是上午 9.15,它将显示为 9:15:0

我想要做的是格式化它们,因此如果任何值(小时、分钟或秒)小于 10,它将在数字前添加一个 0,以便数字显示为 09:15:00。

我尝试的是这样,但它不起作用:

Sub BtnSetClick(sender As Object, e As EventArgs)

        lbl8.Visible = True

        Dim nmTime As String = nmHour.Value.ToString + nmMin.Value.ToString + nmSec.Value.ToString



        lblST.Text.Format(nmTime.ToString, "HH:MM:SS")


        lblST.Text = (nmTime)

        lblST.Visible = True

    End Sub

【问题讨论】:

    标签: vb.net string date time formatting


    【解决方案1】:

    通过多次将所有内容转换为字符串,您似乎有点落后,请尝试以下操作:

    Dim ts As new TimeSpan(CInt(nmHour.Value), CInt(nmMin.Value), CInt(nmSec.Value))
    lblST.Text = ts.ToString("HH:MM:SS")
    

    TimeSpan.ToString 的文档很有用。

    编辑:更新了代码以反映 Tim 关于数据类型的评论。

    【讨论】:

    • 比我的建议更整洁 :)
    • 根据 MSDN,Value 是小数,所以是的,OP 需要转换为整数。
    【解决方案2】:

    尝试使用 TimeSpan 对象,它应该会为您完成所有艰苦的工作!

    Dim nmTime As New TimeSpan(nmHour.Value, nmMin.Value, nmSec.Value)
    
    lblST.Text = nmTime.ToString
    lblST.Visible = True
    

    【讨论】:

      【解决方案3】:

      试试这个:

      Sub BtnSetClick(ByVal sender As Object, ByVal e As EventArgs)          
      
          lbl8.Visible = True          
          Dim nmTime As String = nmHour.Value.ToString().PadLeft(2, '0') + nmMin.Value.ToString().PadLeft(2, '0') + nmSec.Value.ToString().PadLeft(2, '0')            
      
          lblST.Text = nmTime          
          lblST.Visible = True      
      End Sub 
      

      【讨论】:

      • 不要侮辱蒂姆但你接受了错误的答案,ho1的答案是更好的方法。
      • @Rene147 - 完全没有侮辱,只是陈述事实。我相信我在对 ho1 的回答的评论中说了很多同样的话:)
      猜你喜欢
      • 2019-07-13
      • 2012-10-22
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多