2013-03-09 99 views
0

我使用以下代碼進行短日期驗證。TextBox日期驗證

DateTime dt = DateTime.Now; 
Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("fr-FR"); 
if (DateTime.TryParse(textBox1.Text, out dt)) 
{ textBox1.Text = dt.ToShortDateString(); } 

但有一個小問題,如果用戶輸入1/1/1輸出看起來像01/01/2001。

如果用戶輸入1-1-1,則輸出看起來像01/01/2001。由於我給出的格式。

現在我想要的,如果用戶輸入像1-1-1輸出應01-01-2001。

+0

嘗試使用maked文本框....它是一個更好的選擇.... – 2013-03-09 08:12:35

+0

不管是什麼格式的用戶輸入的日期 - >在將字符串解析爲DateTime之後 - >它始終以相同的方式顯示。因爲它是相同的日期時間值 - >只有輸入是不同的。 – ub1k 2013-03-09 08:17:12

+0

@sree aneev所以你想根據輸入權得到輸出?意味着如果你輸入01/01/2001的1/1/1,並且用戶輸入1-1-1你想要01-01-2001。是這樣嗎??? – kashif 2013-03-09 09:20:21

回答

2

試試這個:

dt.ToString(@"dd-MM-yyyy"); 

如果你想根據輸入diferentiate輸出,我建議這樣的:

if (textbox1.Text.Contains("/")) 
{ 
    textBox1.Text = dt.ToString(@"dd/MM/yyyy"); 
} 
else 
{ 
    textBox1.Text = dt.ToString(@"dd-MM-yyyy"); 
} 
+0

爲此1/1/1我可以做什麼我想要根據用戶兩人 – 2013-03-09 18:26:52

+0

@sree aneev看我的編輯 – Matus 2013-03-09 19:34:12

+0

@Matus這是我upvoted你爲你的答案。但與此相反,我問提問者爲什麼不使用MaskTextBox。如果我是他,我永遠不會爲日期目的至少使用TextBox。 – kashif 2013-03-09 20:30:15

0

我不明白,爲什麼你正在使用文本框代替MaskedTextBox在這種情況下。 我會建議你爲此使用MaskedTExtBox。拖放從工具箱2個MaskedTextBox中到表單,並在FormLoadEvent使用此代碼

maskedTextBox1.Mask = "##/##/####"; 
maskedTextBox2.Mask = "##-##-####"; 
+0

注意:我已經使用了兩個MaskedBoxes向您顯示您可以使用任何類型的所需格式。您甚至可以根據您的要求進行手動設置。 – kashif 2013-03-09 20:32:27

+0

但他想根據同一文本框中的用戶輸入以兩種不同的方式格式化日期 – Matus 2013-03-10 08:43:44

+0

只要嘗試一件事情@kashif,如果他輸入1/1/1什麼應該是您的第一個「##/##」的答案/ ####「爲上面的答案應該是1 // 1 // 1。這是錯誤的。 – 2013-03-10 14:43:05