1

我需要一个自定义正则表达式来计算短日期模式(等等。“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));

    }

但!此表达式不支持所有各种格式,所以

要求

  • 仅接受 '/' 作为分隔符。
  • 在各种文化(等,en-US,th-TH,jp-JP,...)中有效的所有短日期模式(仅限日期,时间也会很棒)。这可能吗,实际上我只需要知道哪一部分是年、月或日,但我在任何地方都找不到。请帮我...
  • 有效的常用范围:日 [1-31]{1-2}、月 [1-12]{1-2}、年[1600-9999]{4}
4

1 回答 1

1

正如 Jim 和我所建议的,您可以迭代所有文化:

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.

于 2013-03-24T14:22:22.953 回答