2

Windows 8 RTMにアップグレードした後、私が持っていた日時解析コードが機能しなくなりました。標準のコンソールアプリを使用してこれを複製しました。

CultureInfo provider;

provider = new CultureInfo("en-US");

string testDate = "1/1/2012";

DateTime date = DateTime.MinValue;
if (DateTime.TryParseExact(testDate, 
      CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern,  // (dd/MM/yyyy)
      provider,
      DateTimeStyles.None,
      out date))
    Console.WriteLine("Date: {0}", date);
else
    Console.WriteLine("Can't parse date: {0} / {1}", testDate, date);

Console.ReadLine();

出力:Can't parse date: 1/1/2012 ...

また、カルチャ情報を「eb-GB」にしてみました(特定の形式では違いがないため)。 ただし、入力日をに変更する01/01/2012と正常に動作します。

これに影響を与える.net4.5DateTimeフレームワークに何か変更がありますか?

4

2 に答える 2

1

ShortDatePattern内のものではなく、選択したプロバイダーからのものを使用するように変更する必要がありますCurrentCulture

DateTime date = DateTime.MinValue;
if (DateTime.TryParseExact(testDate, 
      provider.DateTimeFormat.ShortDatePattern, // Change this line
      provider,
      DateTimeStyles.None,
      out date))
    Console.WriteLine("Date: {0}", date);
else
    Console.WriteLine("Can't parse date: {0} / {1}", testDate, date);
于 2012-08-19T11:23:17.827 に答える
0

ShortDatePattern使用しているものが本当にあるか確認しました"dd/MM/yyyy"か?多分CurrentCultureあなたが期待していないものです。

それ以外は、とを使用してをフォーマットする場合には違いが"d/M/yyyy"あります。たぶん、の構文解析はより厳密になり、との違いを反映していますか?"dd/MM/yyyy"DateTimeDateTime"d/M/yyyy""dd/MM/yyyy"

于 2012-08-19T11:34:49.433 に答える