我的字符串值为17:00:25
我如何在军事时间只显示1700? 即时调试,如下所示
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
任何其他适合格式的转换或格式?
答案 0 :(得分:1)
如果列是TimeSpan ...
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
答案 1 :(得分:0)
Const militaryTimeFormat As String = "HHmm"
' convert to a string in military time
Dim input As String = DateTime.Now.ToString(militaryTimeFormat)
MsgBox(input)
答案 2 :(得分:0)
我建议使用强类型Field
method of the datarow来获取TimeSpan的值(您提到它在mySQL中存储为Time数据类型,因此这是正确的.NET等价物)
然后你可以格式化时间跨度。请注意Timespan formats与DateTime格式不同:
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
答案 3 :(得分:0)
我个人不会尝试格式化字符串值以获取 datetime 值,否则您将拒绝访问.net的固有 datetime 处理功能。< / p>
处理 datetime 值的更安全的方法是以下......
该值应为 datetime 之前您尝试格式化它。
这将为您提供一种干净的方式来处理此问题,使用您放置参数的格式代码“t”,并且没有无效值的问题。
重要的是,如果您的网站使用多种语言,它还可以使您的代码文化安全。例如, en-GB 将显示“17:00”,而 en-US 将显示“5:00 pm”。
因此,对于您的代码,它只是......
Dim time As String = String.Format("{0:t}", row("timereported"))
这将为您提供格式“HH:mm”或您的示例“17:00”。