2013-07-03 92 views
2

我想將ms值格式化爲兩位數的「分鐘:秒」值,兩位數字我的意思是「00:00」,但我得到的是「0:0」。格式時間值

這是一個例子:

enter image description here

我想顯示 「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 

更新:

爲了解決這個問題,我這樣做,但我知道存在簡單的和改進的方式做到這一點:如果你改變了自己的String.format來的String.Format

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 

回答

1

你會想看看http://msdn.microsoft.com/en-us/library/ee372286.aspxhttp://msdn.microsoft.com/en-us/library/ee372287.aspx上可用的格式幫助。

這表明,你幾乎可以用它作爲你的整個方法:

Return TimeSpan.FromMilliseconds(MilliSeconds).ToString("mm\:ss") 

這是使用靜態FromMilliseconds方法,這需要double但你Int64將轉換爲隱式。

請參閱http://msdn.microsoft.com/en-us/library/system.timespan.frommilliseconds.aspx瞭解方法的詳細信息(並從那裏鏈接到其他類文檔)。

1

使用這個格式化字符串"{0:00}:{1:00}"

+1

謝謝你的工作,但對我來說正確的格式是:「{0:00}:{1:00}」 – ElektroStudios

+0

對,糾正 – Andre

2

(「{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 
+1

你不需要String.Format,你可以使用'Time.ToString (「mm \:ss」)'這有點整潔。 – Chris

+0

@Chris剛完美!返回新的TimeSpan(TimeSpan.TicksPerMillisecond * MilliSeconds).ToString(「mm \:ss」),謝謝。 – ElektroStudios

+0

@ElektroHacker:你可以用'Return TimeSpan.FromMilliseconds(MilliSeconds).ToString(「mm \:ss」)''去掉一個更好的'TicksPerMillisecond'使用。 :) – Chris