我想将字符串转换为日期时间。我收到一个错误This is not a valid datetime
。
我要转换的字符串和代码如下。
string date1 = "9/13/2012 5:26:06 PM";
TimePart = DateTime.ParseExact(date1, "M/d/yyyy HH:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);
我认为它应该M/dd/yyyy h:mm:ss tt
在您的格式参数中。
看起来你的格式是真的M/d/yyyy h:mm:ss tt
。区别是h
(12 小时制,只有所需的位数)而不是HH
(24 小时制,前导 0 填充到 2 位数字)。
如果输入格式完全不同,您应该使用DateTime.Parse
它,这样您就不必告诉它确切的格式。 ParseExact
更快,并且要求它匹配指定的格式,这在您的演员阵容中可能更可取。
您需要使用小写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。
您应该使用小写字母h
表示 12 小时制(因为您有一个AM/PM
指示符)。
此外,您应该只使用 one h
,因为您没有0
时间的前导,并且hh
期望它。
一个有效的格式字符串:
"M/d/yyyy h:mm:ss tt"
看起来与HH
“5”不匹配。试试h
。