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

ジムと私が提案したように、すべての文化を繰り返すことができます。

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 に答える