我想检查日期是否格式正确.正确的日期有很多种可能性,例如:
我可以用这样的代码测试每个代码:
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;
}
我必须手动添加这些时间或我该怎么办?
是的ParseExact可以采用要检查的格式列表.
var formats = new[] { "M.d.yyyy", "dd.MM.yyyy" };
var dateValue = DateTime.ParseExact(
    dateString, formats, new CultureInfo("sl-SI"), DateTimeStyles.None);
您可以使用以下内容,但请注意,多个格式可能能够解析相同的日期.例如,10/11/12可以解析为yy/MM/dd或MM/dd/yy,它们都是有效的美国日期格式.MM/dd/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());
}
| 归档时间: | 
 | 
| 查看次数: | 12524 次 | 
| 最近记录: |