質問

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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top