2011-04-19 59 views
0

日期不知道是否有更好的方法來驗證日期,尋找一種更好的方式來驗證C#4

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

任何建議

EDITED添加的規則

  • 日期時間不能爲空
  • 如果有價值,它應該是安全的保存到SQL服務器
  • 我有圖案其中的日期設定的IOS 1900.Is這某種MINVALUE

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

+0

「更好」以什麼方式?那些看起來像那裏的域特定規則。 – Tejs 2011-04-19 14:16:08

+1

你需要什麼驗證規則? – Oded 2011-04-19 14:18:07

+1

因爲value是一個DateTime,它將已經在DateTime的有效範圍內,所以你的前兩個檢查是多餘的(除非你真的想拒絕在邊界上的日期)。 – Polyfun 2011-04-19 14:20:40

回答

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日您的業務目標的所有日期?

+0

感謝您的回覆。有道理。而且我的業務目標是接受你描述的有效日期 – user712923 2011-04-20 05:18:00

相關問題