【问题标题】:Convert a string like "mm/dd/yyyy hh:mm:ss tt" to DateTime将“mm/dd/yyyy hh:mm:ss tt”之类的字符串转换为 DateTime
【发布时间】:2019-03-07 10:36:48
【问题描述】:

我必须将像 10/23/2017 12:00:00 AM 这样的字符串转换为 DateTime。

(通过引用Convert string to Datetime dd/MM/yyyy hh:mm:ss tt

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

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

System.FormatException

错误进一步说明

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

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

【问题讨论】:

  • 问题是 mm 表示分钟 - 你想要 MM 代替,在格式字符串的开头。
  • @CodeCaster:该示例表明 OP 正在使用不变的文化,因此它不应该是文化问题。
  • @Jon 完全正确,没关系,我已经重新打开了。

标签: c# string datetime


【解决方案1】:

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

mm/dd/yyyy hh:mm:ss tt

这意味着:

  • 2 位 分钟
  • 2 位数的月份日期
  • 4 位数年份
  • 2 位数 半天小时 (1-12)
  • 2 位数分钟
  • 2 位秒数
  • 上午/下午指示符

这里有两个可疑的方面:

  • 您指定了两次分钟。你真的是指一年中的第一部分,这意味着你想要MM
  • 您正在指定一个很少使用的两位数的半天小时。例如,我希望看到“8:00:00 AM”而不是“08:00:00 AM”。

所以我怀疑你想要一个格式字符串:

MM/dd/yyyy h:mm:ss tt

完整代码:

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

【讨论】:

    猜你喜欢
    • 2023-01-02
    • 1970-01-01
    • 2014-04-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多