我想将字符串转换为日期时间。我收到一个错误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);
我想将字符串转换为日期时间。我收到一个错误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);
您需要使用小写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。
我认为它应该是M/dd/yyyy h:mm:ss tt
在您的格式参数。
不,即使这是行不通的。错误是字符串未被识别为有效的日期时间。 –
尝试删除第一个“H”。 –
@ShamiC我刚刚更新了答案,因为您已经添加了'tt',它不再是'24小时'格式了。所以把'HH'换成'hh' –
它看起来像HH
不符合“5”。尝试h
。
这真的应该是一个评论 –
看起来你的格式确实是M/d/yyyy h:mm:ss tt
。差异是h
(12小时,只有需要的位数),而不是HH
(24小时,前导0填充到2位数字)。
如果输入格式可以改变,您应该使用DateTime.Parse
来代替,以便您不必告诉它确切的格式。 ParseExact
速度更快,并且要求它与指定的格式相匹配,这在您的演员阵容中可能更可取。
对于12小时制时钟,您应该使用小写字母h
(因为您有AM/PM
代号)。
此外,您应该只使用一个h
,因为您没有领先的0
到几小时,并且hh
预计它。
格式字符串的作品:
"M/d/yyyy h:mm:ss tt"
您可能会发现有用的:则DateTime.ToString()模式(http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8 -F859AA20581F.htm) – Otiel
http://stackoverflow.com/q/3025916/1731716这个链接可能会帮助你 –