检测日期格式C#

时间:2017-08-14 09:49:55

标签: c# validation date

我有一些自动化的C#windows服务可以将文本上传到数据库。 '文字'是由我们无法控制的第三方应用程序生成的。

我的问题是该文本包含一个日期列。 默认日期格式为DD / MM / YY。但有时我们得到MM / YY / DD

是否有任何棘手的方法来识别或转换MM / YY / DD为DD / MM / YY。数据可能只包含三天,四天的日期。所以我打算检查日期是否在三到四天的容忍范围内,它将被接受。其他明智的手动纠正它。 例如,

14/08/17 is accepted

08/17/14 is not accepted. Logic should convert this to 14/08/17

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您可以尝试使用良好的格式进行解析,如果可以,则没有问题,它将返回日期。如果出错,您可以尝试使用'二级格式'。如果一切顺利,它将返回日期。

请注意,如果解析日期提前3天以上,则不会将其视为有效日期,并且会返回null。

if(DateTime.TryParseExact(input, "dd/MM/yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue)
{
     int daysBetween = (dateValue-DateTime.Now).Days
     if(daysBetween < 4)
     {
          return dateValue
     }
}
if(DateTime.TryParseExact(input, "MM/yy/dd", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateValue)
{
     int daysBetween = (dateValue-DateTime.Now).Days
     if(daysBetween < 4)
     {
          return dateValue;
     }
}
return null

如果返回null,您将有一个无效日期,如果没有,那将是解析日期