如何显示HHmm格式的字符串

时间:2014-03-13 05:33:15

标签: .net vb.net datetime datetime-format

我的字符串值为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

任何其他适合格式的转换或格式?

4 个答案:

答案 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 datetimeoffset 值。
  • 如果它是一个用户条目,并且您正在处理一个字符串(这是我能想到的唯一可以保证这一点的方案),那么验证并转换为 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”。