2012-11-04 35 views
3

我無法做到這一點 - 它總是返回False。爲什麼TryParseExact在這個例子中不起作用?

我在這裏錯過了什麼?

DateTimeOffset parsedDate; 

if (DateTimeOffset.TryParseExact("2012-10-31 23:59:59", "YYYY-MM-dd HH:mm:ss" 
         , CultureInfo.InvariantCulture 
         , DateTimeStyles.None, out parsedDate) == false) 
{ 
    throw new ArgumentException("dateToPare", dateToParse); 
} 

回答

10

yyyy應該是小寫,根據MSDN

5

嘗試以年爲 「YYYY」 - 小寫

2

試試這個:

[TestCase("2012-10-31 10:59:59", 2012, 10, 31, 10, 59, 59)] 
[TestCase("2012-10-31 23:59:59", 2012, 10, 31, 23, 59, 59)] 
public void ParseExactTest2(string dateTimeString, int year, int month, int day, int hour, int minute, int second) 
{ 
    DateTime actual = DateTime.ParseExact(dateTimeString, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None); 
    DateTime expected = new DateTime(year, month, day, hour, minute, second); 
    Assert.AreEqual(expected, actual); 
} 

正如指出:YYYY必須是小寫。 另一種方法是如果要拋出異常,則使用ParseExact而不是TryParseExact。使用ParseExact可以免費獲得框架引發的正確異常。 也許嘗試抓住它,並把你的理論發展與parseexception作爲innerexception。

相關問題