1

我必须尝试从引起一些麻烦的字符串中解析出日期时间。

大多数情况下,字符串如下

'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失败了,从不接受新格式化的(无空格)格式字符串。为什么?

4

1 回答 1

2

因为有了TryParseExact,日期的间距很重要。

这有点 hacky,但如果没有更好的解决方案,我会做一个TryParseExactusing 'ddd MMM d HH:mm:ss yyyy',如果失败,另一个TryParseExactusing 'ddd MMM d HH:mm:ss yyyy'(有两个空格)


编辑

我想我找到了一个更聪明的方法,传递DateTimeStyles.AllowInnerWhiteTryParseExact方法。

根据文档:

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

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

于 2013-08-07T13:26:39.197 回答