2012-10-18 35 views
1

我想将字符串转换为日期时间。我收到一个错误This is not a valid datetime从字符串转换为日期时间在C#

我想要转换的字符串和代码如下。

string date1 = "9/13/2012 5:26:06 PM"; 
TimePart = DateTime.ParseExact(date1, "M/d/yyyy HH:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture); 
+0

您可能会发现有用的:则DateTime.ToString()模式(http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8 -F859AA20581F.htm) – Otiel

+0

http://stackoverflow.com/q/3025916/1731716这个链接可能会帮助你 –

回答

2

您需要使用小写h

DateTime TimePart = DateTime.ParseExact(
           date1, 
           "M/d/yyyy h:mm:ss tt", 
           CultureInfo.InvariantCulture); 

Console.WriteLine(TimePart); // 09/13/2012 17:26:06 

大写的 “H” 是24小时的时间,小写字母 “H” 是12小时的时间与AM/PM。

6

我认为它应该是M/dd/yyyy h:mm:ss tt在您的格式参数。

+0

不,即使这是行不通的。错误是字符串未被识别为有效的日期时间。 –

+0

尝试删除第一个“H”。 –

+1

@ShamiC我刚刚更新了答案,因为您已经添加了'tt',它不再是'24小时'格式了。所以把'HH'换成'hh' –

1

它看起来像HH不符合“5”。尝试h

+0

这真的应该是一个评论 –

3

看起来你的格式确实是M/d/yyyy h:mm:ss tt。差异是h(12小时,只有需要的位数),而不是HH(24小时,前导0填充到2位数字)。

如果输入格式可以改变,您应该使用DateTime.Parse来代替,以便您不必告诉它确切的格式。 ParseExact速度更快,并且要求它与指定的格式相匹配,这在您的演员阵容中可能更可取。

2

对于12小时制时钟,您应该使用小写字母h(因为您有AM/PM代号)。

此外,您应该只使用一个h,因为您没有领先的0到几小时,并且hh预计它。

格式字符串的作品:

"M/d/yyyy h:mm:ss tt" 
相关问题