为什么TryParseExact在这个例子中不起作用?

时间:2012-11-04 10:29:55

标签: c# .net datetimeoffset tryparse

我无法完成这项工作 - 总是返回False。

我在这里想念什么?

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

3 个答案:

答案 0 :(得分:10)

根据{{​​3}},

yyyy应该是低级的。

答案 1 :(得分:5)

尝试将年份视为“yyyy” - 小写

答案 2 :(得分: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,您可以免费获得框架抛出的正确异常。 也许尝试捕获它并抛出你的argumentexception,并将parseexception作为innerexception。