.net 格式化时间值

.net 格式化时间值,.net,vb.net,winforms,timespan,.net,Vb.net,Winforms,Timespan,我想将ms值格式化为两位数的“分:秒”值,两位数的意思是“00:00”,但我得到的是“0:0” 这是一个例子: 我想用“02:04”代替“2:4” 这是我的代码: Label_TrackPosition.Text = Format_Time(sender.value) Private Function Format_Time(ByVal MilliSeconds As Int64) As String Dim Time As New TimeSpan(TimeSpan.TicksPe

我想将ms值格式化为两位数的“分:秒”值,两位数的意思是“00:00”,但我得到的是“0:0”

这是一个例子:

我想用“02:04”代替“2:4”

这是我的代码:

Label_TrackPosition.Text = Format_Time(sender.value)

Private Function Format_Time(ByVal MilliSeconds As Int64) As String
    Dim Time As New TimeSpan(TimeSpan.TicksPerMillisecond * MilliSeconds)
    Return String.Format("{0}:{1}", Time.Minutes, Time.Seconds)
End Function
更新:

为了解决这个问题,我这样做了,但我知道存在一种简单且改进的方法:

Private Function Format_Time(ByVal MilliSeconds As Int64) As String
    Dim Time As New TimeSpan(TimeSpan.TicksPerMillisecond * MilliSeconds)

    Select Case Time.Minutes.ToString.Length
        Case 1
            Select Case Time.Seconds.ToString.Length
                Case 1
                    Return String.Format("0{0}:0{1}", Time.Minutes, Time.Seconds)
                Case 2
                    Return String.Format("0{0}:{1}", Time.Minutes, Time.Seconds)
            End Select
        Case 2
            Select Case Time.Seconds.ToString.Length
                Case 1
                    Return String.Format("{0}:0{1}", Time.Minutes, Time.Seconds)
                Case 2
                    Return String.Format("{0}:{1}", Time.Minutes, Time.Seconds)
            End Select
    End Select

    ' Return String.Format("{0}:{1}", Time.Minutes, Time.Seconds)
End Function

使用此格式字符串
“{0:00}:{1:00}”

使用此格式字符串
“{0:00}:{1:00}”

如果将String.Format更改为String.Format(“{0:mm\:ss}”,Time),它将以02:04而不是2:4给出结果

Label_TrackPosition.Text = Format_Time(sender.value)

Private Function Format_Time(ByVal MilliSeconds As Int64) As String
    Dim Time As New TimeSpan(TimeSpan.TicksPerMillisecond * MilliSeconds)
    Return String.Format("{0:mm\:ss}", Time)
End Function

如果将String.Format更改为String.Format(“{0:mm\:ss}”,Time),则结果将为02:04,而不是2:4

Label_TrackPosition.Text = Format_Time(sender.value)

Private Function Format_Time(ByVal MilliSeconds As Int64) As String
    Dim Time As New TimeSpan(TimeSpan.TicksPerMillisecond * MilliSeconds)
    Return String.Format("{0:mm\:ss}", Time)
End Function
您需要查看并获取有关可用格式的帮助

这表明您可以将此作为整个方法:

Return TimeSpan.FromMilliseconds(MilliSeconds).ToString("mm\:ss")
这是使用静态
frommilluses
方法,该方法采用
double
,但您的
Int64
将隐式转换为该方法

有关该方法的详细信息,请参见(并从中链接到其他类文档)。

您将需要查看并获得有关可用格式的帮助

这表明您可以将此作为整个方法:

Return TimeSpan.FromMilliseconds(MilliSeconds).ToString("mm\:ss")
这是使用静态
frommilluses
方法,该方法采用
double
,但您的
Int64
将隐式转换为该方法


有关该方法的详细信息,请参阅(并从那里链接到其他类文档)。

谢谢你的帮助,但对我来说正确的格式是:“{0:00}:{1:00}”,谢谢你的帮助,但对我来说正确的格式是:“{0:00}:{1:00}”你不需要String.format,你可以使用
Time.ToString(“mm\:ss”)
稍微整洁一点。@Chris太完美了!返回新的TimeSpan(TimeSpan.TickspermillSecond*毫秒)。ToString(“mm\:ss”),谢谢。@ElektroHacker:您可以使用
Return TimeSpan.FromMillSeconds(毫秒)。ToString(“mm\:ss”)
来更好地使用它,这样可以删除那些看起来很糟糕的
TickspermillSecond
使用:)我想我不妨把它作为一个新的答案加上,因为它实际上与这个答案有很大的不同您不需要String.Format,只需使用
Time.ToString(“mm \:ss”)
即可,这有点整洁。@Chris太完美了!返回新的TimeSpan(TimeSpan.TickspermillSecond*毫秒)。ToString(“mm\:ss”),谢谢。@ElektroHacker:您可以使用
Return TimeSpan.FromMillSeconds(毫秒)。ToString(“mm\:ss”)
来更好地使用它,这样可以删除那些看起来很糟糕的
TickspermillSecond
使用:)我想我不妨把它作为一个新的答案加上,因为它实际上与这个答案有很大的不同