我有一个日期 <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);
)。有人可以在这里阐明我可能做错了什么吗?
答案 0 :(得分:3)
如果组件之间没有定界符,则将ParseExact
与可选的前导零一起使用可能会很含糊。 2019111000000
代表什么? 1月11日或11月1日?
我认为,如果解析器在代码中打了一个可选的前导零,并且看到值中的位数超过一位,它将尝试解析该数字是否为两位数。
因此,它将2019年解析为年份,然后尝试将44解析为月份,但失败了。知道44不能代表有效月份并推断它必须代表个位数月份,还不够“聪明”。
您可以自己进行一些处理,例如取出已知宽度的年份和时间,并确定月或日(或两者)是否为两位数,但仍然可能与我在上面给出的例子。如果您的数据还有其他上下文(例如按某种顺序排列),则可以对月份和日期进行有根据的猜测,但是内置的解析器并不那么复杂。