2014-03-13 28 views
2

我有字符串值17:00:25如何顯示帶HHmm格式的字符串

如何顯示只有1700的軍事時間? IM中包含

Dim time As String = String.Format("{0:hh:mm}", row("timereported")) 
MessageBox.Show(time.ToString) 

和實際的代碼是

For Each row As DataRow In table.Rows 
    rowInsert = DS.Tables(0).NewRow 
    Dim time As String = String.Format("{0:hh:mm}", row("timereported")) 
    rowInsert(0) = time 
    DS.Tables(0).Rows.Add(rowInsert) 
Next row 

調試,但它顯示爲17時00分25秒

任何其他種轉換或格式的適合於格式化?

回答

1

如果列是一個時間跨度...

For Each row As DataRow In table.Rows 
    rowInsert = DS.Tables(0).NewRow 
    Dim time As String = Format(New Date + CType(row("timereported"), TimeSpan), "HHmm") 'this line changed' 
    rowInsert(0) = time 
    DS.Tables(0).Rows.Add(rowInsert) 
Next row 

如果列是一個字符串...

For Each row As DataRow In table.Rows 
    rowInsert = DS.Tables(0).NewRow 
    'new code starts' 
    Dim time As String = "" 
    Dim tsp As TimeSpan 
    If TimeSpan.TryParse(CStr(row("timereported")), tsp) Then 
    time = (New Date + tsp).ToString("HHmm") 
    End If 
    'new code ends' 
    rowInsert(0) = time 
    DS.Tables(0).Rows.Add(rowInsert) 
Next row 
+0

17:00:25是mySQL時間數據類型sir –

+0

我已經更改了將字段視爲TimeSpan的代碼,請讓我知道它是否有效。 – SSS

+0

如果字段是文本字段,我還添加了代碼 – SSS

0
Const militaryTimeFormat As String = "HHmm" 

' convert to a string in military time 
Dim input As String = DateTime.Now.ToString(militaryTimeFormat) 
MsgBox(input) 
0

我會建議使用強類型Field method of the datarow得到值作爲TimeSpan(您提到它在mySQL中存儲爲時間數據類型,因此這是正確的.NET等價物)

然後您可以格式化時間跨度。注意Timespan formats是不同日期時間格式:

For Each row As DataRow In table.Rows 
    rowInsert = DS.Tables(0).NewRow 
    Dim time As String = row.Field(Of TimeSpan)("timereported").ToString("hhmm") 
    rowInsert(0) = time 
    DS.Tables(0).Rows.Add(rowInsert) 
Next row 

僅供參考這樣的:

Dim ts As New TimeSpan(17, 0, 25) 
Debug.WriteLine(ts.ToString("hhmm")) 

輸出

1700 
0

我個人不會試圖格式化字符串值獲得日期時間的值,否則你拒絕自己訪問.net固有的日期時間個處理功能。

處理日期時間值將是以下一個更安全的方式...

  • 如果從數據庫返回的數據,返回爲日期時間,或DATETIMEOFFSET值。
  • 如果它是一個用戶條目,並且您正在處理一個字符串(這是我認爲可以保證的唯一場景),那麼驗證並轉換爲datetime值。

值應該是日期時間之前,您試圖格式化

這將給你一個乾淨的方式來處理這個問題,使用格式代碼「t」來放置參數,並且沒有無效值的問題。

重要的是,如果您的網站是多語言的,它也會使您的代碼文化安全。例如,en-GB將顯示「17:00」,而en-US將顯示「下午5:00」。

因此,對於你的代碼會那麼僅僅是...

Dim time As String = String.Format("{0:t}", row("timereported")) 

這將使你的格式爲「HH:MM」或你的榜樣「17:00」。

相關問題