開発者マシン(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
を返します
M/d/yyyy
(例:2012年3月14日)dd/MM/yyyy
(例:2012/03/14)Web.configの実際の値
<globalization requestEncoding="UTF-8" responseEncoding="UTF-8" uiCulture="en-GB" culture="en-GB" />
これをweb.configに入れることでなんとか動作させることができました
<globalization culture="en-GB"/>
あなたのweb.config
追加
<globalization culture='auto' uiCulture='auto' />
そして、ブラウザが優先ロケールを渡すように正しく構成されていると仮定すると、リクエストを処理するワーカースレッドのCurrentCulture
とCurrentUICulture
が正しく設定されます。
ロケール依存の操作(DateTime
format d
などを含む)は、クライアントの設定を使用します。
MSDNのweb.configのグローバリゼーション要素: https://msdn.Microsoft.com/en-us/library/ydkak5b9(v = vs.71).aspx