将类似“ mm / dd / yyyy hh:mm:ss tt”的字符串转换为DateTime

时间:2019-03-07 10:36:49

标签: c# string datetime

我必须将类似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

该错误进一步表明

  

字符串未被识别为有效的DateTime。

如何将字符串转换为DateTime?

1 个答案:

答案 0 :(得分:5)

解析时的大多数问题是由于格式字符串不正确-在这种情况下。查看您的格式字符串:

mm/dd/yyyy hh:mm:ss tt

这意味着:

  • 2位数字分钟
  • 每月2位数字
  • 4位数字年份
  • 两位数半小时(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);