日期在不存在的日期上格式不正确

时间:2012-10-24 14:40:22

标签: vb.net validation date format

我有以下代码将日期(从数据库条目)转换为正确的格式:

Dim blah As Date = "02/29/2001"
MsgBox(Format(blah, "yyyy-MM-dd"))

然而,它一直告诉我这个:

从字符串“02/29/2001”到“日期”类型的转换无效。

现在我看到2/29/2001没有第29天 - 那一年只有28。那么我将如何检查这一点,以便在未正确输入数据库表中的日期时不会抛出错误?

2 个答案:

答案 0 :(得分:2)

您可以使用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天,就像您的情况一样

here's msdn链接

答案 1 :(得分:2)

您可以使用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