web-dev-qa-db-ja.com

asp.netでen-USの日付をen-GBに変更する方法は?

開発者マシン(cassini)上

new DateTime(2012,3,14).ToString("d")

結果として

14/03/2012

これは正しいですが、完全なIISサーバーに展開すると、結果は

03/14/2012

サーバーはコントロールパネル/地域の言語ですべて英語/英国/英国に設定されており、コマンドプロンプトでの実行日はdd/MM/YYYY形式を返します。

サイトはuiCulture="en-GB"culture="en-GB"の両方に設定されており、これらはweb.configグローバリゼーションタグに表示されます。

強制文化を追加することでこの問題を回避できます

new DateTime(2012,3,14).ToString("d", new CultureInfo("en-GB"));

しかし、私は本当にフォーマットを間違って設定しているものを知りたいです。

CultureInfo.CurrentCulture.Name, CultureInfo.CurrentUICulture.Name

どちらもen-USを返します


  • en-USM/d/yyyy(例:2012年3月14日)
  • en-GBdd/MM/yyyy(例:2012/03/14)

Web.configの実際の値

 <globalization requestEncoding="UTF-8" responseEncoding="UTF-8" uiCulture="en-GB" culture="en-GB" />
21
rob

これをweb.configに入れることでなんとか動作させることができました

<globalization culture="en-GB"/>
28
Jon

あなたのweb.config 追加

<globalization culture='auto' uiCulture='auto' />

そして、ブラウザが優先ロケールを渡すように正しく構成されていると仮定すると、リクエストを処理するワーカースレッドのCurrentCultureCurrentUICultureが正しく設定されます。

ロケール依存の操作(DateTime format dなどを含む)は、クライアントの設定を使用します。

MSDNのweb.configのグローバリゼーション要素: https://msdn.Microsoft.com/en-us/library/ydkak5b9(v = vs.71).aspx

4
Richard