C# C语言中从字符串到日期时间的转换#

C# C语言中从字符串到日期时间的转换#,c#,sql,datetime,C#,Sql,Datetime,我想将字符串转换为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

我想将字符串转换为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/dd/yyyy h:mm:ss tt

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

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

看起来您的格式确实是
M/d/yyyy h:mm:ss tt
。不同之处在于
h
(12小时,根据需要只有尽可能多的数字)而不是
HH
(24小时,0到pad的前导为2位)


如果输入格式可能有所不同,则应改用,这样就不必告诉它确切的格式
ParseExact
更快,并且要求它匹配指定的格式,这在您的演员阵容中可能更可取。

看起来您的格式确实是
M/d/yyyy h:mm:ss tt
。不同之处在于
h
(12小时,根据需要只有尽可能多的数字)而不是
HH
(24小时,0到pad的前导为2位)


如果输入格式可能有所不同,则应改用,这样就不必告诉它确切的格式
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

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
指示器)

此外,您应该只使用一个
h
,因为您没有时间的前导
0
,并且
hh
需要它

一个有效的格式字符串:

"M/d/yyyy h:mm:ss tt"

您应该使用小写字母
h
表示12小时时钟(因为您有
AM/PM
指示器)

此外,您应该只使用一个
h
,因为您没有时间的前导
0
,并且
hh
需要它

一个有效的格式字符串:

"M/d/yyyy h:mm:ss tt"

不,即使这样也不行。错误是字符串未被识别为有效的日期时间。@ShamiC我刚刚更新了答案,因为您添加了
tt
,所以它不再是
24小时
格式。因此,将
HH
更改为
HH
@JohnWoo-并且由于
HH
预期一个单位时间的前导
0
,您需要删除额外的
h
。如果没有@Oded的纠正,这是不准确的。为什么会有这么多选票?(我投了反对票)@TimS。你说得对。我在奥德更正后更新了它。不允许我更新答案吗?如果我有能力改变我的答案。我会把一切都给你。:)不,即使这样也不行。错误是字符串未被识别为有效的日期时间。@ShamiC我刚刚更新了答案,因为您添加了
tt
,所以它不再是
24小时
格式。因此,将
HH
更改为
HH
@JohnWoo-并且由于
HH
预期一个单位时间的前导
0
,您需要删除额外的
h
。如果没有@Oded的纠正,这是不准确的。为什么会有这么多选票?(我投了反对票)@TimS。你说得对。我在奥德更正后更新了它。不允许我更新答案吗?如果我有能力改变我的答案。我会把一切都给你。:)你可能会发现它很有用:这个链接可能会帮助你你可能会发现它很有用:这个链接可能会帮助你这真的应该是一条评论这真的应该是一条评论