DateTime.TryParseExact和不同的分隔符

时间:2012-12-10 07:51:14

标签: .net

是否可以指示DateTime.TryParseExact接受多个(任何)sepatator(指定分隔符占位符而不是特定分隔符)?例如:

DateTime.TryParseExact(performanceRow[5], "M/d/yyyy", 
    CultureInfo.InvariantCulture, DateTimeStyles.AllowWhiteSpaces, out startDate)

如果日期有'/'字符作为分隔符,则此方法有效。但是我刚收到一个'。'的文件。作为分隔符,解析失败。

由于

3 个答案:

答案 0 :(得分:5)

使用TryParseExact的这个变种

DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime%)

MSDN link

第二个参数是一个字符串数组,定义为

  

<强>格式

     

类型:System.String []

     

一系列允许格式的s。

描述说明:字符串表示的格式必须与至少一种指定格式完全匹配

答案 1 :(得分:1)

您可以传递数组格式,如下所示,

string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", 
               "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", 
               "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", 
               "M/d/yyyy h:mm", "M/d/yyyy h:mm", 
               "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};

将此格式作为TryParseExact方法中的第二个参数传递。

答案 2 :(得分:0)

我刚刚创建了这个格式列表,使我的验证尽可能包含典型的英国日期格式,而不会引起歧义。希望这对某人有帮助。

{
    // slash separator:
    "d/M/y",        //no leading 0s
    "dd/M/y",       //leading 0 in date
    "d/MM/y",       //leading 0 in month
    "dd/MM/y",      //leading 0 in date & month
    "d/M/yyyy",     //leading 0 in year
    "dd/M/yyyy",    //leading 0 in date & year
    "d/M/yyyy",     //leading 0 in date, month & year
    // dash separator:
    "d-M-y",        //no leading 0s
    "dd-M-y",       //leading 0 in date
    "d-MM-y",       //leading 0 in month
    "dd-MM-y",      //leading 0 in date & month
    "d-M-yyyy",     //leading 0 in year
    "dd-M-yyyy",    //leading 0 in date & year
    "d-M-yyyy",     //leading 0 in date, month & year
    // dot separator:
    "d.M.y",        //no leading 0s
    "dd.M.y",       //leading 0 in date
    "d.MM.y",       //leading 0 in month
    "dd.MM.y",      //leading 0 in date & month
    "d.M.yyyy",     //leading 0 in year
    "dd.M.yyyy",    //leading 0 in date & year
    "d.M.yyyy",     //leading 0 in date, month & year
}