我试图找出以下给定日期-时间文字的正确字符串格式:
18-JUN-13 12.17.36.000000000
使用MSDN,我设法合成了以下格式:"d'-'MMM'-'y'T'h'.'m'.'s'.'fff"
但是当使用DateTime.ParseExact
时,解析失败并返回FormatException
:* 字符串未被识别为有效的DateTime*。
我的代码:
DateTime.ParseExact("18-JUN-13 12.17.36.000000000", "d'-'MMM'-'y'T'h'.'m'.'s'.'fff", null);
3条答案
按热度按时间nfzehxib1#
你可以用
以 * 英语为基础的 * 文化,例如
InvariantCulture
。我现在在移动的上,所以我不能尝试它:(7
,这就是为什么你不能解析你的字符串 * 没有 * 操纵它。你可以像这样使用它;看起来这就是为什么我们将
"fffffff"
自定义格式作为毫秒的顶部字符。从docs;虽然可以显示时间值的第二个分量的百万分之一,但该值 * 可能 * 没有意义。日期和时间值的精度取决于系统时钟的分辨率。在Windows NT 3.5(及更高版本)和Windows Vista操作系统上,时钟的分辨率约为10-15毫秒。
你问的;
你会怎么操作这根线呢
r3i60tvu2#
你不能直接解析(即
ParseExact()
)小数点后超过7位的时间字符串 * 除非 *,正如juharr对DateTime format throws exception的评论所建议的那样,您将多余的数字解析为文字字符:否则,您需要截断多余的数字,如Soner Gönül's answer。
不幸的是,异常消息和文档都没有提到为什么
fffffff
/FFFFFFF
是限制,因为原因很简单,但很容易被忽略。0.0000001
秒是:滴答是
DateTime
可以表示的最小间隔。格式字符串,如ffffffff
(八位有效数字)及以上不能有效,因为这将要求DateTime
能够存储一个滴答的分数。虽然“String was not recognized as a valid DateTime”* 确实 * 描述了问题,但在这种情况下,不仅仅是输入不匹配指定的格式,而且输入也不能精确地用DateTime
表示。eufgjt7s3#
你有一堆单引号在那里,这是不正确的格式。试试这个