1

我想将字符串转换为日期时间。我收到一个错误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);
4

5 回答 5

6

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

于 2012-10-18T14:10:10.713 回答
3

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

如果输入格式完全不同,您应该使用DateTime.Parse它,这样您就不必告诉它确切的格式。 ParseExact更快,并且要求它匹配指定的格式,这在您的演员阵容中可能更可取。

于 2012-10-18T14:12:19.817 回答
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。

于 2012-10-18T14:14:28.393 回答
2

您应该使用小写字母h表示 12 小时制(因为您有一个AM/PM指示符)。

此外,您应该只使用 one h,因为您没有0时间的前导,并且hh期望它。

一个有效的格式字符串:

"M/d/yyyy h:mm:ss tt"
于 2012-10-18T14:14:31.257 回答
1

看起来与HH“5”不匹配。试试h

于 2012-10-18T14:11:03.100 回答