寻找更好的方法来验证c#4中的日期

时间:2011-04-19 14:13:40

标签: c#

想知道是否有更好的方法来验证日期,

  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;
  }

任何建议

已编辑添加规则

  • DateTime不能为空
  • 如果有值,应该可以安全地保存到sql server
  • 我有将日期设置为1900的情况。这是某种MinValue

=============

1 个答案:

答案 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日的所有日期您的业务目标?