2010-06-30 179 views
0

使用C#自定義日期驗證格式

C#代碼

protected void cusCustom_ServerValidate(object sender, ServerValidateEventArgs e) 
{ 
    if(e.Value.Length == 8) 
     e.IsValid = true; 
    else 
     e.IsValid = false; 
} 

頁代碼

<asp:CustomValidator runat="server" id="cusCustom" controltovalidate="txtoedate" onservervalidate="cusCustom_ServerValidate" errormessage="The text must be exactly 8 characters long!" /> 

上面的代碼工作長度,但我要檢查的日期格式是這樣 「yyyy-mm-dd」,用於檢查此日期格式,如何更改我的代碼。

需要編寫代碼幫助

回答

3

嗯,首先,你的日期格式不長8個字符,所以你需要修復,爲10。然後你最好的選擇是一個DateTime.TryParseExact你想要的特定格式驗證。

DateTime value; 
e.IsValid = DateTime.TryParseExact(e.Value, "yyyy-MM-dd", 
    CultureInfo.InvariantCulture, DateTimeStyles.None, out value); 

您可以使用InvariantCulture脫身,因爲您只處理日期零件的數字表示,並且完全指定格式。

+1

哦不,請不要嘗試... catch來驗證日期。使用'DateTime.TryParseExact'。 – 2010-06-30 06:59:43

+0

我可以得到一個示例代碼 – Gopal 2010-06-30 07:42:03

+0

@Darin - 我怎麼知道'TryParse'而不是'TryParseExact'?謝謝。 – 2010-06-30 07:51:48

0
+0

您能否提供樣本代碼.... – Gopal 2010-06-30 07:41:47

+0

樣本位於我提供的鏈接中,我猜它不夠明顯,對不起。 – 2010-06-30 13:45:25

0

嘗試使用日期的正則表達式