条件中的DateTime.TryParse正在抛出异常

时间:2012-11-02 19:37:42

标签: asp.net vb.net visual-studio-2010 if-statement

在这两个例子中,我给它一个字符串,如下所示: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

为什么第一个代码段会给我一个例外?

提前致谢!

2 个答案:

答案 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;
}

此代码段将解析日期时间而不会抛出异常。

我希望这会有所帮助:)