是否可以指示DateTime.TryParseExact接受多个(任何)sepatator(指定分隔符占位符而不是特定分隔符)?例如:
DateTime.TryParseExact(performanceRow[5], "M/d/yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.AllowWhiteSpaces, out startDate)
如果日期有'/'字符作为分隔符,则此方法有效。但是我刚收到一个'。'的文件。作为分隔符,解析失败。
由于
答案 0 :(得分:5)
使用TryParseExact的这个变种
DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime%)
第二个参数是一个字符串数组,定义为
<强>格式强>
类型: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
}