TryParseExact“ yyyyMdhhmmss”

时间:2019-05-02 00:34:58

标签: c# datetime

我有一个日期 <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Header add Access-Control-Allow-Origin "*" Header add Access-Control-Allow-Methods "GET" Header add Access-Control-Allow-Headers "application/json" </Directory> ,该日期是我要尝试的201944102446。 请注意,该日期和月份没有前导零。

我尝试了以下方法。

DateTime.TryParseExact

这不能正确解析DateTime字符串(给我DateTime.TryParseExact("201944102446", "yyyyMdhhmmss", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime parsedDateTime); )。有人可以在这里阐明我可能做错了什么吗?

1 个答案:

答案 0 :(得分:3)

如果组件之间没有定界符,则将ParseExact与可选的前导零一起使用可能会很含糊。 2019111000000代表什么? 1月11日或11月1日?

认为,如果解析器在代码中打了一个可选的前导零,并且看到值中的位数超过一位,它将尝试解析该数字是否为两位数。

因此,它将2019年解析为年份,然后尝试将44解析为月份,但失败了。知道44不能代表有效月份并推断它必须代表个位数月份,还不够“聪明”。

您可以自己进行一些处理,例如取出已知宽度的年份和时间,并确定月或日(或两者)是否为两位数,但仍然可能与我在上面给出的例子。如果您的数据还有其他上下文(例如按某种顺序排列),则可以对月份和日期进行有根据的猜测,但是内置的解析器并不那么复杂。

相关问题