识别时间值和格式

时间:2016-02-16 10:31:16

标签: .net vb.net

我可以从SQL数据库接收数据,并使用以下简单功能格式化日期

If IsDate(item.Text) Then
    item.Text = CDate(item.Text).ToShortDateString
End If

是否有等效的时间值,所以我只能显示小时和分钟?像

这样的东西
If IsTime(item.Text) Then
    item.Text = item.Text.ToString("hh:mm")
End If

1 个答案:

答案 0 :(得分:0)

此函数将帮助您识别和解析文本Date,如果无法解析,则返回Nothing(因此:不是日期):

''' <summary>
''' Gets the date given a series of predefined formats, as shown in this post:
''' http://stackoverflow.com/questions/16075159/check-if-a-string-is-a-valid-date-using-datetime-tryparse
''' </summary>
Private Function TryGetDate(dateAsString As String) As Date?
    Dim formats As String() = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm", "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"}
    Dim dateValue As Date
    If DateTime.TryParseExact(dateAsString, formats, New Globalization.CultureInfo("en-US"), Globalization.DateTimeStyles.None, dateValue) Then
        Return dateValue
    Else
        Return Nothing
    End If
End Function

然后,在String.Format的帮助下,您可以将此日期转换为您想要的格式(在您的情况下:HH:mm)。这是一个如何工作的例子:

Date? time = TryGetDate(item.Text)
If time IsNot Nothing Then
    Dim outputText = String.Format("{0:HH:mm}", time)
End If