C#と日付の文化の問題
-
03-07-2019 - |
質問
asp.netアプリを作成しました。ポストバックルーチンの1つは、ユーザーが送信したフォームデータをSQL 2005 dbに保存するだけです。開発用マシンではすべて問題なく動作しますが、ライブサイトにデプロイすると、解析日付チェッカーから無効な日付が取得されます。
基本的に、ライブマシンではアメリカの日付形式を想定していますが、これは私が望むものではありません。ユーザーはdd / MM / yyyy形式で入力できる必要があります。 21/10/2009のような有効な日付は、ライブサーバーではエラーを返しますが、私の開発マシンではエラーを返しません。以下は、例外をスローするコードです。
DateTime dt;
dt = DateTime.Parse(sdate);
//sdate in GB dd/MM/yyyy format
dd / MM / yyyy形式の日付を解析ルーチンに強制させることは可能ですか?
解決
このようにします:
System.Globalization.CultureInfo cultureinfo =
new System.Globalization.CultureInfo("en-gb");
DateTime dt = DateTime.Parse("13/12/2009", cultureinfo);
他のヒント
DateTime.ParseExact を使用して指定できます期待される形式。
別のオプションは、web.configファイルで使用するカルチャを指定することです:
<system.web>
...
<globalization
culture="da-DK"
uiCulture="da-DK" requestEncoding="utf-8" responseEncoding="utf-8"
/>
</system.web>
はい、ParseExactはMattが述べたようにそれを行います。
コードは次のようになります:
dt = DateTime.ParseExact(sdate, "dd/MM/yyyy", CultureInfo.InvariantCulture);
所属していません StackOverflow