3

次のコードがFormatExceptionを生成するのはなぜですか?

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", null);

DateTime.ParseExact

おそらく、コードがMVC3サイト実行ロジックの一部としてIIS 7.5 Expressで実行されているという事実と関係がありますか?

4

3 に答える 3

5

次に、CultureInfoを含める必要があります。

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", new CultureInfo("en-US"));

フォーマット文字列のスラッシュはカルチャに依存し、CultureInfoを渡さない場合は、現在のカルチャが使用されます。使用することもできCultureInfo.InvariantCulture、動作します。JonSkeetがここでいくつかの詳細な説明を提供します。

于 2012-01-24T22:36:06.850 に答える
4

あなたの文化に依存します、それを方程式から取り除くために....

DateTime.ParseExact("03/01/2012", "dd/MM/yyyy", CultureInfo.InvariantCulture);
于 2012-01-24T22:36:19.500 に答える
3

ドキュメントによると、次のいずれかの条件が与えられると、aFormatExceptionがスローされます。

public static DateTime ParseExact(
    string s,
    string format,
    IFormatProvider provider
) 
  • sまたはformatは空の文字列です。
  • sには、フォーマットで指定されたパターンに対応する日付と時刻が含まれていません。
  • 時間コンポーネントとsのAM/PM指定子が一致しません。

nullを渡すと、デフォルトで現在のスレッドのカルチャになっているIFormatProvider思います。これはReflectorで確認する必要があります。渡したかった理由はありますnullか?

アップデート:

.NET Reflectorで確認したところ、デフォルトで現在のスレッドのになっていますDateTimeFormatInfo。ここにコードを投稿できるかどうかわかりません。

于 2012-01-24T22:39:35.373 に答える