如何将长毫秒(纳秒)部分的字符串解析为DateTime?

时间:2015-02-09 12:17:47

标签: c# string datetime

我正在尝试找出以下给定日期时间文字的正确字符串格式:

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);

2 个答案:

答案 0 :(得分:3)

您可以使用

dd-MMM-yy hh.mm.ss.fffffff

基于英语的文化为例,例如InvariantCulture。我现在在手机上,所以我无法尝试:(

AFAIK ,毫秒部分解析限制为7,这就是为什么你不能解析你的字符串而不用操纵它。您可以像使用它一样使用它;

var dt = DateTime.ParseExact("18-JUN-13 12.17.36.0000000",
                             "dd-MMM-yy HH.mm.ss.fffffff",
                             CultureInfo.InvariantCulture);

看起来这就是为什么我们可能有The "fffffff" custom format作为毫秒的顶级字符。来自docs;

  

虽然可以显示百万分之一秒   时间值的组成部分,该值可能无意义。该   日期和时间值的精确度取决于分辨率   系统时钟。在Windows NT 3.5(及更高版本)和Windows Vista上   在操作系统中,时钟的分辨率约为10-15   毫秒。

你问;

  

你将如何操纵字符串?

,一种获取逗号最后一个索引的方法,然后将其子串到8个索引之后;

string s = "18-JUN-13 12.17.36.000000000";
var dateString = s.Substring(0, s.LastIndexOf(".") + 8);

答案 1 :(得分:0)

你有一堆单引号,格式不正确。试试这个

DateTime.ParseExact("18-JUN-13 12.17.36.000000000", "d-MMM-yTh.m.s.fff", null);