2010-11-15 71 views
4
string date = txtWorkingDate.Text; 
      DateTime dateTime = DateTime.MinValue; 

      if (DateTime.TryParse(date, out dateTime)) 
      { 
       args.IsValid = true; 
      } 
      else 
       args.IsValid = false; 

txtWorkingDate.Text是像“DD.MM.YYYY” becouse这validateion的始终是假的,如果日期是不喜欢“DD.MM.YYYY”。我如何检查“dd.MM.yyyy”,“MM/dd/yyyy”等类型的日期都是有效的。日期时间的TryParse问题

回答

17

通过使用this overload并提供接受的格式:

string date = txtWorkingDate.Text; 
DateTime dateTime; 
string[] formats = new[] { "dd.MM.yyyy", "MM/dd/yyyy" }; 
if (DateTime.TryParseExact(date, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateTime)) 
{ 
    args.IsValid = true; 
} 
else 
{ 
    args.IsValid = false; 
} 
+1

它总是返回false不管格式I输入日期:( – Axel 2016-09-22 15:35:34

+0

@Axel尝试添加到格式的所有possbile组合。我的意思.. DD.MM.YYYY,d.MM.yyyy,DD .Myyyy等 – Galma88 2016-10-07 13:16:16

2
System.Globalization.CultureInfo cultureinfo = 
     new System.Globalization.CultureInfo("en-gb"); 
    DateTime dt = DateTime.Parse("13/12/2009", cultureinfo); 

你需要指定的文化假设你知道它。

1

可以使用

DateTime.TryParse(
    string s, 
    IFormatProvider provider, 
    DateTimeStyles styles, 
    out DateTime result 
) 

超载。

而且,你不需要,如果,你可以简单地写

args.IsValid = DateTime.TryParse(...); 

由于DateTime.TryParse()已经返回一个布尔值。