1

これにはたくさんのスレッドがありますが、私はまだ次の場所でブロックされています:

私が持っているもの:

個人の生年月日を選択するWindows Phoneアプリを構築しようとしています

コードビハインド:

string dateString = "";

  DateTime dt = DateTime.Now;
     if (value != null && DateTime.TryParse(value.ToString(),  culture, DateTimeStyles.None, out dt))
  {
    if (dt.Equals(DateTime.MinValue))
    {
      //dateString = "mm/dd/yyyy";
      return "";
    }
    else
      return dt.ToShortDateString();
  }
  else
    return dateString;
}

私が必要なもの:

文化に依存しない日付形式を解析したい。

私が試したこと:

1.CultureInfo.InvariantCultute、CultureInfo.CurrentCultureを使ってみた

2. ExactParser を次のように使用してみました:

string[] formats = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", "d/M/yyyy hh:mm:ss tt", "dd/MM/yyyy hh:mm:ss tt", "d/M/yyyy" , "dd/MM/yyyy" , "M/d/yyyy" ,"MM/dd/yyyy", 
               "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",   "dd/MM/yyyy hh:mm:ss", "d/M/yyyy h:mm:ss",
               "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",  "d/M/yyyy hh:mm tt", "d/M/yyyy hh tt",
               "M/d/yyyy h:mm", "M/d/yyyy h:mm", "d/M/yyyy h:mm", "d/M/yyyy h:mm",
               "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm","dd/MM/yyyy hh:mm", "dd/M/yyyy hh:mm"};


 if (value != null && DateTime.TryParseExact(value.ToString(), format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))

しかし、それはハードコーディングされすぎており、いくつかのケースをカバーできません。

任意の形式で DOB を選択する方法はありますか?

どんな助けでも大歓迎です。ありがとう!!

4

3 に答える 3

14

誰もが独自の日付形式を持っているため、そうではありません。

あと、これ!

あなたが基本的にしようとしているのは、上記の XKCDコミックの後半から魔法のように日付を推測することです。;)

とは言っても、試行してこれを行う唯一の方法は、考えられるすべての形式で文字列を解析し、解析が成功したすべてのケースでサニティ チェックを行うことです。しかし、サニティチェックは難しいだろう... 11-02は2月11日または11月2日を意味しますか? ある種のコンテキストが必要になります。

于 2013-08-09T06:16:53.067 に答える
6

申し訳ありませんが、日時があいまいになる可能性があるため、不可能に思えます。そのため、誤解されています。

"01/02/03"

01 Feb 2003 (Russia)

02 Jan 2003 (USA)

03 Feb 2001 (China)

http://en.wikipedia.org/wiki/Date_format_by_countryを参照

于 2013-08-09T06:11:01.650 に答える