【问题标题】:String was not recognized as a valid DateTime with the format of "MM/dd/yyy hh:mm:ss tt"字符串未被识别为格式为“MM/dd/yyyy hh:mm:ss tt”的有效日期时间
【发布时间】:2025-12-09 08:55:01
【问题描述】:

我正在尝试在 C# 中将字符串转换为 DateTime,但出现此错误:

System.FormatException: '字符串未被识别为有效的日期时间。'

错误在下一行:

DateTime endTime = DateTime.ParseExact(endDate, "MM/dd/yyyy hh:mm:ss tt", null);

我的 endDate 变量具有以下信息:“10/03/2017 06:52:48 AM”

我做错了什么?

【问题讨论】:

  • 这不会给我任何错误:DateTime.ParseExact("10/03/2017 06:52:48 AM", "MM/dd/yyyy hh:mm:ss tt", null); 你确定输入的字符串和你说的一样吗?
  • 嗨@RufusL,感谢您的尝试,是的,我确定,我复制了带有断点的字符串。
  • 对不起@Servy。我会停止编辑,让你修复它。 :)
  • @BJMyers 不用担心,现在应该都照顾好了。

标签: c# string date datetime


【解决方案1】:

当您将null 用作IFormatProvider 时,所有DateTime 解析方法都使用您计算机的CurrentCulture 设置。

您有几种可能会遇到异常。例如,您的CurrentCulture 可能具有AM,因为它是AMDesignator 属性。

取而代之的是,使用适当的文化,如InvariantCulture

DateTime endTime = DateTime.ParseExact("10/03/2017 06:52:48 AM", 
                                       "MM/dd/yyyy hh:mm:ss tt", 
                                       CultureInfo.InvariantCulture);

【讨论】:

最近更新 更多