如何用HHmm格式显示字符串



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

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

如果列是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
Const militaryTimeFormat As String = "HHmm"
' convert to a string in military time
Dim input As String = DateTime.Now.ToString(militaryTimeFormat)
MsgBox(input)

我建议使用数据row的强类型Field方法来获得TimeSpan的值(您提到它在mySQL中存储为时间数据类型,因此这是正确的。net等效)

可以设置时间跨度的格式。注意时间跨度格式与日期时间格式不同:

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

我个人不会尝试格式化字符串值来获得datetime值,否则你会拒绝自己访问。net固有的datetime处理功能。

处理datetime值的一种更安全的方法是:

  • 如果从数据库返回数据,返回datetimedatetimeoffset值。
  • 如果它是一个用户条目,并且你正在处理一个字符串(这是我能想到的唯一可以保证这一点的场景),那么验证并转换为datetime值。

在尝试格式化之前,值应该是datetime

这将给您留下一个干净的方法来处理这个问题,使用格式代码"t"来放置参数,并且不会出现无效值的问题。

重要的是,如果您的站点是多语言的,它还可以使您的代码文化安全。例如en-GB将显示"17:00",而en-US将显示"5:00pm"。

那么对于你的代码,它将会是…

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

这将为您提供格式为"HH:mm",或者在您的示例中为"17:00"。

相关内容

  • 没有找到相关文章

最新更新