在这两个例子中,我给它一个字符串,如下所示:26-03-17
Dim mvarValor As String Dim dateVarValor As DateTime
此代码段在TryParse
上抛出异常:
If Not mvarValor = Nothing AndAlso DateTime.TryParse(mvarValor, dateVarValor) Then
Return Format(dateVarValor, mvarFormat)
Else
Return strNull
End If
下一个代码段是不引发异常,但应该是False
:
DateTime.TryParse(mvarValor, dateVarValor)
If dateVarValor = Nothing Then
Return strNull
Else
Return Format(dateVarValor, mvarFormat)
End If
为什么第一个代码段会给我一个例外?
提前致谢!
答案 0 :(得分:1)
您需要传递符合Y2K标准的日期。解析器无法从2位数告诉年份。如果你通过2003-12-25,它将验证日期确实存在,但03-12-25是不明确的。
答案 1 :(得分:1)
DateTime.TryParse
会抛出三种类型的异常
http://msdn.microsoft.com/en-us/library/9h21f14e(v=vs.100).aspx
你必须得到其中一个。以下是DateTime.TryParse
的正确用法var culture = CultureInfo.CreateSpecificCulture("en-US");
string parsedDateTime = null;
if (DateTime.TryParse(parseMe, culture, DateTimeStyles.None, out dateResult))
{
parsedDateTime = dateResult;
}
此代码段将解析日期时间而不会抛出异常。
我希望这会有所帮助:)