3

検索方法で使用するために、日付の一部をさまざまな形式で解析したいと思います。ユーザーが日と月、月と年、または日と月と年を検索できるようにしたい。

しかし、もっと問題なのは、ユーザーがいる国に応じて、可能なすべての日付形式でこれを実行したいということです。これはASP.NETページであり、CultureInfoを使用できるため、CultureInfo.DateTimeFormatも使用できます。

あなたは何か考えがありますか、そのようなことをする方法はありますか?イギリス人が16/05を検索し、アメリカ人が05/16を入力したり、ドイツ人が16.05を使用して5月16日の結果を検索したりできるのは素晴らしいことだと思います。

DateTimeFormat.ShortDatePatternを使用することは可能だと思います。しかし、どうすればそれらから日、月、年を取得するためにそれを使用できますか?

私は次のような使用法を考えます

public void GetDateParts(string SearchStr, out int? day, out int? month, out int? year)

これを手伝ってくれる人に感謝します。

4

2 に答える 2

2

あなたのほとんどが言及したように、私は日付ピッカーまたはドロップダウンを備えた方法を選択すると思います。しかし、別の解決策に興味がある人のために:

しばらくの間、さまざまな形式について考えましたが、ほとんどの場合、それらは非常に似ていることがわかりました。そこで、より頻繁に使用されるパターンの最も一致するバージョンを返すメソッドを作成しました。したがって、「dmy」->「dmy」または「d /my」->「d/m/y」。

public static string SimplifyDateFormat(DateTimeFormatInfo DTFI)
{
    StringBuilder SB = new StringBuilder(DTFI.ShortDatePattern.ToLower());

    SB.Replace("m y", "m/y").Replace(" 'г.'", "").Replace(" ", "").Replace("dd", "d")
    .Replace("mm", "m").Replace("yyyy", "y").Replace("yy", "y");

    if (SB[SB.Length - 1] == '.') SB.Remove(SB.Length - 1, 1);
    return SB.ToString();
}

これにより、可能なフォーマットの数が26から次の8に減少します。

  • d / m / y
  • dmy
  • dmy
  • y / m / d
  • ymd
  • ymd
  • m / d / y
  • mdy

区切り文字に[/.-]を使用する場合、これらは正規表現を介して解析するための3つの異なる形式にすぎません。

PSはまだ部分的な日付の問題を修正していません。ただし、すべての文化を完全な日付で検索することは可能です。

于 2010-07-01T14:29:18.117 に答える
0

いくつかの入力形式を定義してから、フォームに(ユーザーに関する情報に基づいて)そのうちの1つを課すことができます。何かのようなもの:

英国の場合は「日付を入力(DD-MM):_ -- _」

アメリカ人の場合は「日付を入力(MM-DD):_ -- _」

等...

于 2010-07-01T12:36:46.780 に答える