如何区分有效的DateTime-string和plain string?

时间:2016-12-06 12:29:07

标签: c#

我必须检查循环中的值是普通string还是可以转换为DateTime。但DateTime.TryParse甚至接受" 1/10"。

List<string> lst = new List<string>() { "1/1/2016 12:00:00 AM", "1/10" };
foreach (string item in lst)
{
   DateTime dt;
   if (DateTime.TryParse(item, out dt))
   {
     //Pick date values and do something
   }
   else
   {
     //Do something with string value
   }
}

有人可以帮助我吗,它怎么可能?

1 个答案:

答案 0 :(得分:2)

  

值来自循环。 datetime parse验证第二个   一个作为日期

您可以使用DateTime.TryParseExact代替DateTime.TryParse

string[] strings = {"1/1/2016 12:00:00 AM", "1/10" };
foreach (var str in strings)
{
    DateTime dt;
    if (DateTime.TryParseExact(str, "d/M/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture, DateTimeStyles.None , out dt))
    {
        Console.WriteLine("is a date: " + str);
    }
}

TryParse偶数"1/10"被接受为有效的DateTime。