DateTime.TryParseExact不处理长格式字符串

时间:2013-08-07 13:21:37

标签: asp.net datetime

我必须尝试从导致某些麻烦的字符串中解析出日期时间。

大多数字符串的时间如下

'Sat Aug 10 08:01:37 2013'
        ^ note one space

TryParseExact的原始日期格式为'ddd MMM d HH:mm:ss yyyy'

然而,在单位数天内,通常不会删除十位数字,而是将其替换为空格(见下文)

'Wed Aug  7 08:01:37 2013'
        ^^ note the two spaces 

我的第一个想法是简单地删除所有空格以实现格式字符串:

'dddMMMdHH:mm:ssyyyy'

但我的DateTime.TryParseExact失败并且从不接受新格式化(无空格)的格式字符串。为什么呢?

1 个答案:

答案 0 :(得分:2)

因为使用TryParseExact,日期的间距很重要。

有点hacky,但如果没有提供更好的解决方案,我会使用TryParseExact进行'ddd MMM d HH:mm:ss yyyy',如果失败,则使用TryParseExact进行另一个'ddd MMM d HH:mm:ss yyyy'两个空格)


修改

我认为我找到了一种更聪明的方法,将DateTimeStyles.AllowInnerWhite传递给TryParseExact方法。

根据文件:

  

字符串中间的额外空白字符必须是   在解析期间忽略,除非它们出现在DateTimeFormatInfo中   格式模式。

不确定它是什么意思“除非它们出现在DateTimeFormatInfo格式模式中。”但值得一试。