2013-12-17 136 views
0

我有一个值为13/12/17,09:37:20 + 32的字符串我无法将其转换为日期时间格式。总是会出现错误,指出“字符串未被识别为有效的日期时间”。这是我的代码:字符串日期到日期时间格式

DateTime crtdDate = DateTime.ParseExact(l.CreateDate, "yy/MM/dd,hh:mm:ss tt", CultureInfo.InvariantCulture); 

请有人帮助我。谢谢!

+5

'+ 32'应该是什么?这当然不是有效的时区偏移量。 –

+0

你的日期是无效格式尝试使它像这样2013/12/17,09:37:20 + 32而不是13/12/17,09:37:20 + 32因为13被解释为13个月。代码DateTime crtdDate = Convert.ToDateTime(d); – Jade

回答

1

tt表示任一ampm

32不会被TT进行解析。如果您试图解析一秒钟的洪流,请尝试ff

var crtdDate = DateTime.ParseExact(l.CreateDate, "yy/MM/dd,hh:mm:ss+ff", CultureInfo.InvariantCulture); 
+0

+32是你的时间数值 – Jade

+0

从来没有见过它,但我可以在格式spec中找到的最接近的东西是'zz',它指定**小时**与UTC的偏移量。为什么有人需要抵消超过12小时? http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx – sharoz

+0

我也是,但它会自动将日期减少到指定日期的前一天。 c#做了一些关于其他位(这只是我的猜测) – Jade

0

你的字符串必须完全匹配格式:

l.CreateDate = "06/15/2008"; 

[http://msdn.microsoft.com/en-us/library/az4se3k1(v=vs.110).aspx][1] 
"d" -> 6/15/2009 1:45:30 PM -> 6/15/2009 (en-US) 
     6/15/2009 1:45:30 PM -> 15/06/2009 (fr-FR) 
     6/15/2009 1:45:30 PM -> 2009/06/15 (ja-JP) 



DateTime.ParseExact(l.CreateDate, "d", CultureInfo.InvariantCulture); 

没有+32,这将解析:

DateTime.ParseExact("13/12/17,09:37:20", "yy/MM/dd,hh:mm:ss", CultureInfo.InvariantCulture); 

使用一个有效的时区符,下面的工作:

DateTime crtdDate = DateTime.ParseExact("13/12/17,09:37:20+00:00", "yy/MM/dd,hh:mm:ssK", 
      CultureInfo.InvariantCulture);