【问题标题】:String can not be converted to a DateTime with ParseExact method无法使用 ParseExact 方法将字符串转换为 DateTime
【发布时间】:2013-07-08 06:02:48
【问题描述】:

我有一个字符串 7/24/2013 6:05:00 PM 并想将其转换为 DateTime 对象。 我正在使用

DateTime newDate = DateTime.ParseExact(date,"M/d/yyyy h:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture);

但是 newDate 对象是09.07.2013 06:45:00。我想要它,因为它在字符串版本上方看到。

您是否知道为什么它没有转换为我想要的格式,或者任何意见都很好,我可以将它呈现为日期时间对象。

谢谢

【问题讨论】:

  • 日期字符串是 7/13/2013 6:05:00 PM
  • 老实说,用 InvariantCulture 和 CurrentCulture 进行解析对我有用。如果您可以控制日期时间格式,则始终可以将其设置为国际格式,然后使用标准 DateTime.Parse() 例如YYYY-MM-DD HH:MM:SS
  • 如果您深入了解新的日期属性,您能否确认日期和月份的值?也许您的显示格式样式与您尝试解析的样式不同。
  • day 是 9,month 是 7,其他属性也显示真实值,但日期被视为上面我不想要的。我可能会尝试将其发送到网络服务以查看它是否正常工作。

标签: date datetime


【解决方案1】:

由于您的日期已经采用通用格式样式,您应该尝试使用当前的 UI 文化进行解析,在您的情况下为 en-US。

例如

DateTime.ParseExact(date,"M/d/yyyy h:mm:ss tt", System.Globalization.CultureInfo.CurrentCulture);

通过使用 InvariantCulture,解析在解析字符串时会忽略所有文化线索。

欲了解更多信息:http://msdn.microsoft.com/en-us/library/dd465121.aspx

【讨论】:

  • 我得到的字符串未被识别为有效的日期时间。如果我使用当前文化,则例外。 System.Globalization.CultureInfo("en-US") 也给出了我不想要的相同格式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
  • 1970-01-01
相关资源
最近更新 更多