2012-11-02 60 views
0

在這兩個例子中,我給它一個字符串這樣的:26-03-17DateTime.TryParse在有條件時拋出異常

昏暗mvarValor作爲字符串 昏暗dateVarValor爲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開始。如果不mvarValor = Constantes.dtmNull AndAlso ...',和片段#2'如果dateVarValor = Constantes.dtmNull Then' - 這可能您的意思是dateVarValor而不是代碼段1中的mvarValor?另外,有什麼例外呢? – rskar

+0

@rskar'InvalidCastException',條件就是這樣的 – Luis

+0

好吧,那麼InvalidCastException表明這個問題是轉換或轉換的問題之一,在這種情況下,我非常好奇mvarValor和Constantes的數據類型是什麼。 dtmNull。我想知道問題不是TryParse,而是使用'='。 – rskar

回答

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

這個片段的正確使用將解析日期時間未拋出異常。

我希望這有助於:)與`

1

您需要通過符合Y2K標準的日期。解析器不能從2位數字中指出年份。如果你通過了2003-12-25,它將驗證日期確實存在,但03-12-25是不明確的。

+0

好吧,但爲什麼第一個案例拋出一個'例外「,第二種情況是給我」假「? – Luis