C# DateTime.TryParse所有可能的日期类型

C# DateTime.TryParse所有可能的日期类型,c#,datetime,C#,Datetime,我想检查日期的格式是否正确。有许多正确日期的可能性,如: 2010年8月2日 2.8.2010 02.8.2010 02.08 02.八月 我可以使用如下代码对每个进行测试: if (DateTime.TryParse(DateTime.ParseExact(date, "dd.M.", new CultureInfo("sl-SI")).ToString(), out dt)) 但是我可以有40个if语句。是否可以用一个if

我想检查日期的格式是否正确。有许多正确日期的可能性,如:

  • 2010年8月2日
  • 2.8.2010
  • 02.8.2010 02.08
  • 02.八月
我可以使用如下代码对每个进行测试:

if (DateTime.TryParse(DateTime.ParseExact(date, "dd.M.", 
                              new CultureInfo("sl-SI")).ToString(), out dt))
但是我可以有40个if语句。是否可以用一个if语句或一个循环检查所有日期

更新:

根据目前为止的答案,我正在测试这段代码,但我还有一个问题。如果我只有9.2而不是9.2.2010,那么此代码将不起作用:

CultureInfo ci = CultureInfo.GetCultureInfo("sl-SI");
string[] fmts = ci.DateTimeFormat.GetAllDateTimePatterns();

if (DateTime.TryParseExact(date, fmts, ci, DateTimeStyles.AssumeLocal, out dt))
{
    DateTime = Convert.ToDateTime(date);
    Check = true;
}
我必须手动添加此时间,或者我可以做什么?

是可以查看格式列表

var formats = new[] { "M.d.yyyy", "dd.MM.yyyy" };
var dateValue = DateTime.ParseExact(
    dateString, formats, new CultureInfo("sl-SI"), DateTimeStyles.None);

您可以使用如下内容,但请注意,可能有多种格式可以解析同一日期。例如,12年11月10日可以解析为yy/MM/dd或MM/dd/yy,这两种格式都是有效的美国日期格式。MM/dd/yy更常见,因此它出现在列表的第一位,并且是下面代码返回的代码(如果您将其与美国文化而不是示例中的文化一起使用)


在我生活的世界上,人们会把它解析为“dd.mm.yy”。考虑到这一点,整个问题没有什么意义,因为它容易被误解。你为什么接受每种可能的日期格式作为有效输入?请为你的问题添加更新或使用评论功能。另外,请不要使用答案来表示感谢,使用评论或更好的方式,向上投票并将其标记为已接受:您可能也想看到这一点
string testValue = "10.11.12";

DateTime result;
CultureInfo ci = CultureInfo.GetCultureInfo("sl-SI");
string[] fmts = ci.DateTimeFormat.GetAllDateTimePatterns();
Console.WriteLine(String.Join("\r\n", fmts));
if (DateTime.TryParseExact(testValue, fmts, ci,
   DateTimeStyles.AssumeLocal, out result))
{
   Console.WriteLine(result.ToLongDateString());
}