C# 将类似“mm/dd/yyyy hh:mm:ss tt”的字符串转换为日期时间

C# 将类似“mm/dd/yyyy hh:mm:ss tt”的字符串转换为日期时间,c#,string,datetime,C#,String,Datetime,我必须将字符串(如10/23/2017 12:00:00 AM)转换为DateTime 通过引用 当我运行给定的代码时,我得到: System.FormatException 这个错误进一步说明 字符串未被识别为有效的日期时间 如何将字符串转换为日期时间?解析时的大多数问题都是由于字符串格式不正确造成的,这里就是这种情况。查看您的格式字符串: mm/dd/yyyy hh:mm:ss tt 这意味着: 两位数分钟 2位数的月份日 四位数年份 半天的2位数小时1-12 两位数分钟 两位数秒 am/

我必须将字符串(如10/23/2017 12:00:00 AM)转换为DateTime

通过引用

当我运行给定的代码时,我得到:

System.FormatException

这个错误进一步说明

字符串未被识别为有效的日期时间


如何将字符串转换为日期时间?

解析时的大多数问题都是由于字符串格式不正确造成的,这里就是这种情况。查看您的格式字符串:

mm/dd/yyyy hh:mm:ss tt
这意味着:

两位数分钟 2位数的月份日 四位数年份 半天的2位数小时1-12 两位数分钟 两位数秒 am/pm指示器 有两个可疑的方面:

您指定了两次分钟。你的意思是第一部分的月份,这意味着你想要MM 您指定了两位数的半天小时,这是很少使用的。例如,我希望看到的是上午8:00:00,而不是上午8:00:00。 因此,我怀疑您需要以下格式字符串:

MM/dd/yyyy h:mm:ss tt
完整代码:

DateTime date1 = DateTime.ParseExact(
    dateString, "MM/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);

问题是mm表示分钟-您希望在格式字符串的开头有mm。@CodeCaster:该示例显示OP使用的是固定区域性,因此它不应该是一个区域性问题。@Jon完全正确,无需担心,我已经重新打开了。另请阅读Jon的文章,名为。
DateTime date1 = DateTime.ParseExact(
    dateString, "MM/dd/yyyy h:mm:ss tt", CultureInfo.InvariantCulture);