Tryparse datetime字符串到datetime格式

时间:2017-12-19 09:51:01

标签: c# datetime

我正在尝试将"31.01.2017 07:56:29.470000000"日期时间字符串解析为日期时间格式。

使用的代码:

   DateTime requiredDate;
    string date = "31.01.2017 07:56:29.470000000";

    DateTime.TryParseExact(date,
                           "dd.MM.yyyy hh:mm:ss.fffffff",
                           CultureInfo.InvariantCulture,
                           DateTimeStyles.None,
                           out requiredDate);

注意:日期字符串是“31.01.2017 07:56:29.470000000”,但是如果我使用“31.01.2017 07:56:29.4700000”那么它工作正常。

请解析“31.01.2017 07:56:29.470000000”。

2 个答案:

答案 0 :(得分:5)

问题在于解析字符串中允许的最大f个数:最大值为fffffff(7个分数)。你的字符串包含其中的9个。

您可以在documentation中找到此限制。它提到了ffffffff之间的所有可能值,但没有进一步说明。

答案 1 :(得分:2)

问题在于f的数量,最多为7.您使用的是符合ISO 8601的往返日期/时间模式。请参阅documentation

  

“O”或“o”标准格式说明符对应于“yyyy” - 'MM' - 'dd'T'HH':'mm':'ss'。' fffffff K“DateTime值的自定义格式字符串和”yyyy“ - ”MM“ - ”dd'T'HH“:”mm“:”ss“。” fffffff zzz“自定义格式字符串DateTimeOffset值。

如您所见,文档中指示的格式只有f的7位数字。

要解决您的问题,您应该从输入中删除最后两位数字。