3

我无法完成这项工作 - 它总是返回 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);
}
4

3 回答 3

11

yyyy根据MSDN,应该小写。

于 2012-11-04T10:37:08.227 回答
5

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

于 2012-11-04T10:36:58.650 回答
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一起抛出。

于 2012-11-04T10:59:11.260 回答