2013-03-09 100 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