【问题标题】:How to parse the date formats 01022013, 20130102?如何解析日期格式01022013、20130102?
【发布时间】:2014-05-06 15:39:43
【问题描述】:

我正在使用 System.Globalization.DateTimeFormatInfo.InvariantInfo 来解析日期格式 01022013、20130102。我可以解析 01022013 但我无法解析 20130102。

DateTime dt = DateTime.ParseExact(sampleDate, "MMddyyyy", System.Globalization.DateTimeFormatInfo.InvariantInfo);

我怎样才能完成这项工作?

【问题讨论】:

  • 嗯 20130102 听起来像是在使用 yyyyMMdd 格式...或者可能是 yyyyddMM,但这很奇怪。
  • 20130102 在我看来不像 MMddyyyy

标签: c# datetime date-format


【解决方案1】:

您有两种不同的格式,因此在尝试解析它们时需要同时指定它们:

DateTime dt = DateTime.ParseExact(sampleDate, new []{"MMddyyyy", "yyyyMMdd"}, System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None);

【讨论】:

  • 太棒了,我不知道有多种格式的过载。我假设它会按指定的顺序尝试它们,所以也许把最常见的格式放在第一位会是一个轻微的优化。
  • 你不应该担心这个。担心结果是否正确:如果传入“12111112”会怎样?
  • 是的,是 1211 年还是 1112 年?
  • 完全正确:这取决于上述格式的顺序。您可能永远不必处理这种情况,但我的观点是:正确性应该始终胜过节省一些 CPU 周期。
  • 点得很好@Rik - 谢谢你的讨论! :)
猜你喜欢
  • 2014-09-26
  • 1970-01-01
  • 1970-01-01
  • 2021-11-10
  • 1970-01-01
  • 1970-01-01
  • 2018-08-06
相关资源
最近更新 更多