我有以下代码将日期(来自数据库条目)转换为正确的格式:
Dim blah As Date = "02/29/2001"
MsgBox(Format(blah, "yyyy-MM-dd"))
但是,它一直告诉我:
从字符串“02/29/2001”到类型“日期”的转换无效。
现在我看到 2001 年 2 月 29 日没有第 29 天——那一年只有 28 天。那么我将如何检查这一点,以便在未正确输入数据库表中的日期时不会引发错误?
我有以下代码将日期(来自数据库条目)转换为正确的格式:
Dim blah As Date = "02/29/2001"
MsgBox(Format(blah, "yyyy-MM-dd"))
但是,它一直告诉我:
从字符串“02/29/2001”到类型“日期”的转换无效。
现在我看到 2001 年 2 月 29 日没有第 29 天——那一年只有 28 天。那么我将如何检查这一点,以便在未正确输入数据库表中的日期时不会引发错误?
您可以使用IsDate()
如果您的字符串或日期可以转换为日期,则此函数返回 true。
像这样
Dim dateAndTime As String
dateAndTime = "March 15, 1981 10:22 AM"
noDate = "Hello"
dateCheck = IsDate(dateAndTime)
dateCheck = IsDate(noDate)
这将为第一个返回 true,为第二个返回 false
此外,此功能适用于 29、30 或 31 天的月份,如您的情况
这是msdn链接
您可以TryParseExact
改用,例如:
Dim enUS As New CultureInfo("en-US")
Dim dateString As String
Dim blah As Date
' Parse date with no style flags.
dateString = "02/29/2001"
If Date.TryParseExact(dateString, "MM/dd/yyyy", enUS, DateTimeStyles.None, dateValue) Then
MsgBox(Format(blah, "yyyy-MM-dd"))
Else
MsgBox(String.Format("'{0}' is not in an acceptable format.", dateString))
End If