2013-07-10 53 views
0

的用法我需要格式化時間是這樣的:VB.Net更換VB6.Format

函數的輸入看起來像

Input  Output 
01:20  0120 
0120   0120 
01:20:23  0120 
120   0120 
01   0100 
1   0100 

我們曾經使用VB6.Format,但不能不再。我將如何使用諸如String.Format之類的東西來替換此代碼?

我們會使用這樣的事情以前

TimeFormatVariable = VB6.Format(OriginalTimeInput, "hhnn") 
+0

您的輸入看起來像壞串。你怎麼知道'01'是一小時而不是一分鐘? – LarsTech

+0

[有沒有一種方法可以將VB6格式化字符串轉換爲.NET格式化字符串?](http://stackoverflow.com/questions/4072490/is-there-a-way-to-programmatically-convert-vb6 -formatting-strings-to-net-format) –

+0

在VB6格式中不起作用。例如「0120」產生「0000」 – tinstaafl

回答

0

這裏有一個簡單的函數,將採取格式化喜歡你的任何輸入您指定格式的字符串,並返回格式化像你輸出字符串:

Private Function FormatTime(Input As String, Format as String) As String 
    Dim TimeFormat As New DateTime 
    Dim GoodString As Boolean = DateTime.TryParse(Input, TimeFormat) 
    If Not GoodString Then 
     If Integer.TryParse(Input, vbNull) Then 
      If Input.Length > 2 Then 
       Input = Input.PadLeft(4, "0"c) 
       TimeFormat = New DateTime(Now.Year, Now.Month, Now.Day, Integer.Parse(Input.Substring(0, 2)), Integer.Parse(Input.Substring(2)), 0) 
      Else 
       TimeFormat = New DateTime(Now.Year, Now.Month, Now.Day, Integer.Parse(Input.PadLeft(2, "0"c).Substring(0, 2)), 0, 0) 
      End If 
     End If 
    End If 
    Return TimeFormat.ToString(Format) 
End Function 

這並不簡單驗證爲好。它檢查正確的時間格式,如果不是,如果所有字符是數字

你的說法是這樣的:

`TimeFormatVariable = FormatTime(OriginalTimeInput,「HHMM」)

1

假設你OriginalTimeInput要麼日期時間或日期格式:

OriginalTimeInput.ToString("hhmm") 

應該這樣做。

+0

問題在於它以字符串的形式出現。 – user2178477