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

MAR*_*RIA -1 c# string datetime

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

(通过将字符串转换为Datetime dd / MM / yyyy hh:mm:ss tt

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

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

System.FormatException

该错误进一步说明

无法将字符串识别为有效的DateTime。

如何将字符串转换为DateTime?

Jon*_*eet 5

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

mm/dd/yyyy hh:mm:ss tt
Run Code Online (Sandbox Code Playgroud)

这意味着:

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

那里有两个可疑的方面:

  • 您两次指定分钟。您实际上是第一个月的意思,这意味着您想要MM
  • 您要指定两位数的半小时,很少使用。我希望看到例如“ 8:00:00 AM”而不是“ 08:00:00 AM”。

因此,我怀疑您需要以下格式的字符串:

MM/dd/yyyy h:mm:ss tt
Run Code Online (Sandbox Code Playgroud)

完整的代码:

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