我有一些自动化的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
有什么想法吗?
答案 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,您将有一个无效日期,如果没有,那将是解析日期