2011-03-31 191 views
2

试图解析这是日期时间:解析日期时间

2011.03.13-21:15:04+511.0597 

使用

Console.WriteLine(DateTime.ParseExact("2011.03.13-21:15:04+511.0597", 
             "yyyy.MM.dd-hh:mm:ss+ttt.tttt", 
        CultureInfo.CreateSpecificCulture("en-US")).ToString()); 

但它说无法识别字符串。

任何想法即时做错了什么?

+2

您是否尝试过不太正式的DateTime.Parse? – Tejs 2011-03-31 13:33:25

+0

美国的日期是以mm/dd/yyyy格式编写的,在您的日期示例中不是这种情况。 – shahkalpesh 2011-03-31 13:35:59

+1

@shahkalpesh:无所谓,因为他无论如何都定义了自己的格式。 – 2011-03-31 13:37:08

回答

3

不确定,但是如果我在秒数之后将所有内容剪切得很好,自定义格式的"tt"部分是AM/PM标志,这是一个可能的目标......我想你的意思fff这是秒的小数部分...

另外一个是,你有较低情况"hh"这是12小时制时钟只有 - 你的字符串有21的小时部分,这需要大写HH在您的格式...

你也不能分割两组数字的任何字符,因为你有ttt.tttt。我可以得到您的样品最接近的工作代码是这样的:

DateTime.ParseExact("2011.03.13-21:15:04+511", "yyyy.MM.dd-HH:mm:ss+fff", CultureInfo.CreateSpecificCulture("en-US")) 
+0

问题是即时通讯从我没有任何控制权的日志文件中获取这个字符串,所以我坚持使用该示例.. – Stacker 2011-03-31 13:54:46

+1

你能在这段时间后修剪吗?或者剥离解析前的时间段? – 2011-03-31 14:03:58

+0

不幸的是,我不能,因为它有点重要的原因,有时我必须评估日志的顺序,它有所作为。 – Stacker 2011-03-31 14:06:33