【问题标题】:Two different string formats for parsing DateTime用于解析 DateTime 的两种不同的字符串格式
【发布时间】:2021-01-26 12:47:44
【问题描述】:

我必须解析两种不同的 DateTime 格式:dd/MM/yyydd-MM-yy。 该字符串来自item.EmploymentDate,它通常是两种格式之一,我需要将其解析为DateTime 对象。

到目前为止我的代码:

var formatStrings = new string[] { "dd/MM/yyyy", "dd-MM-yyy" };
DateTime.TryParseExact(item.EmploymentDate, formatStrings, CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime resultDate);
employee.Details.EmploymentDate = resultDate;

但是,resultDate 最终成为默认的 DateTime 对象 {1/1/0001 12:00:00 AM},而不是来自 item.EmploymentDate 的值。我可以确认它们不为空。第一个是"30-03-1999"。 我做错了什么?

【问题讨论】:

  • 您应该始终检查TryParse(Exact) 的返回值,以确保解析确实有效。

标签: c# datetime datetime-format


【解决方案1】:

"dd-MM-yyy" 中有三个 yyy 而不是 yyyy,但是 30-03-1999 有 4 位数字表示年份

【讨论】:

  • 不错的收获,我完全错过了!现在我遇到了同样的问题,但是 "1/9/1997" ,为什么 dd/MM/yyyy 没有抓住它?编辑:更改为 d/M/yyyy 并且有效!
  • @crystyxn 因为它是TryParse**Exact**...试试01/01/1997。如果您想同时接受01/09/19971/9/1997,请使用d/M/yyyy(然后更正另一个说明符)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-16
  • 1970-01-01
相关资源
最近更新 更多