想知道是否有更好的方法来验证日期,
public static bool ValidDate(this DateTime value)
{
if (value == DateTime.MinValue) return false;
if (value == DateTime.MaxValue) return false;
var validSqlDate = ((value >= (DateTime)SqlDateTime.MinValue) && (value <= (DateTime)SqlDateTime.MaxValue));
if (!validSqlDate) return false;
if (value.Year <= 1900) return false;
return true;
}
任何建议
已编辑添加规则
=============
答案 0 :(得分:2)
更好的方式就是只编写实现目标所需的代码量。
DateTime.MinValue为1/1/0001
。 SqlDateTime.MinValue是1/1/1753
。之后,你会拒绝1900年以下的所有年份。因此,对MinValue
字段的检查是多余的,将其删除。
DateTime.MaxValue和SqlDateTime.MaxValue是一回事。您不需要同时进行两项检查,请删除SqlDateTime比较。
最终,您的功能是return value.Year > 1900 && value < DateTime.MaxValue;
是否接受了从1901年1月1日到9999年12月31日的所有日期您的业务目标?