设置在.NET中解析部分日期值时假定的年份

Whe*_*lie 10 c# parsing date

我需要解析一个可以采用任何合理格式的日期字符串.例如:

  • 2012-12-25
  • 25 december 2012
  • 25 dec
  • 17:35

一些字符串包含明确的日期,这可能会导致几种可能的DateTime值(例如25 dec可以解释为2012-12-25,2011-12-25,1066-12-25,等).

该办法DateTime.Parse目前正在处理这些模棱两可的值是通过使用当前系统日期,以确定上下文.因此,如果当前日期是2012年7月26日,25 dec则假定字符串在当前年份并被解析为2012-12-25

是否有可能改变这种行为并自己设置当前日期上下文?

Jos*_*hua 2

我唯一能想到的是对日期进行后处理。之后您将获得字符串,并在 DateTime 对象中获得年份。如果字符串不包含年份,则自行设置年份。

if(! string.contains(DateTime.Year.toString() ) {
    // Set the year yourself
}
Run Code Online (Sandbox Code Playgroud)

  • 如果字符串是“25 dec 12”怎么办?那么年份将设置为 2012,但字符串不包含“2012”。 (2认同)
  • `DateTime.Year` 将当前年份返回为 4 位数,因此对于任何具有 2 位数年份的输入日期,这都会失败。在某些情况下,仅检查两位数字与月份/日期会产生歧义。 (2认同)