6

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

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

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

谢谢

4

3 回答 3

7

使用 TryParseExact 的这个变体

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

MSDN 链接

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

格式

类型:System.String[]

s 的允许格式数组。

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

于 2012-12-10T07:53:44.047 回答
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 方法中将此格式作为第二个参数传递。

于 2012-12-10T08:00:46.190 回答
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
}
于 2018-05-18T14:15:47.507 回答