我需要一个自定义正则表达式来计算短日期模式(等“M / dd / yyyy”,“dd / mm / yyyy”,“yyyy / mm / dd”,......取决于文化......)然后我可以得到日,月,年来解析这样的格式:
string input = "03/24/2013";
Match m = Regex.Match(input, @"^(?<day>\d{1,2})/(?<month>\d{1,2})/(?<year>\d{4})$");
if( m.Success )
{
DateTime d = new DateTime(int.Parse(m.Groups["year"].Value),
int.Parse(m.Groups["month"].Value),
int.Parse(m.Groups["day"].Value));
}
但!这个表达式不支持所有各种格式,所以
需要:
答案 0 :(得分:1)
正如吉姆和我建议的那样,你可以遍历所有文化:
foreach (var culture in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
DateTime result;
if (DateTime.TryParseExact(text, "d", culture, DateTimeStyles.None,
out result))
{
// Valid - return, or whatever
}
}
请注意,"d"是短日期模式的标准格式字符串。或者,您可以使用culture.DateTimeFormat.ShortDatePattern
。