【问题标题】:Why TryParseExact does not work in this example?为什么 TryParseExact 在此示例中不起作用?
【发布时间】:2012-11-04 10:29:54
【问题描述】:

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

【问题讨论】:

    标签: c# .net datetimeoffset tryparse


    【解决方案1】:

    yyyy 应小写,根据MSDN

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        试试这个:

        [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一起抛出。

        【讨论】:

          猜你喜欢
          • 2020-11-28
          • 2011-07-17
          • 1970-01-01
          • 2020-08-14
          • 2018-11-14
          • 2014-09-05
          • 2016-02-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多