ASP.NETでどのように日付形式をグローバルに設定しますか?
ローカルマシンとサーバーの地域設定は「英語(ニュージーランド)」に設定されています。
日付をdd/MM/yyyy
でフォーマットすると、たとえば今日の19/11/2008
が表示されることを期待しています。
最近まで、それは実際にローカルマシンとサーバーの両方から取得したものです。
つい最近、不思議な理由で、私たちのローカルマシンはこれまでにないほどわずかに変化しました。 「英語(ニュージーランド)」に設定されているにもかかわらず、日付区切り文字が/
から-
に変更されました!同じ変更は、「英語(ニュージーランド)」と日付区切り文字の/
が表示されているサーバーでは発生していません。
ローカルマシンでは、dd/MM/yyyy
の形式で、19-11-2008
ではなく19/11/2008
を取得します。
これは少し戸惑います。
これまでのところ私が見ることができる唯一の方法は、スラッシュをエスケープし、形式をdd\/MM\/yyyy
に設定することです。うまくいくように見えますが、理想的な解決策ではないようです。
誰も助けてくれますか?
注:これはイントラネットアプリケーション用であり、真のグローバリゼーションについては気にしません。日付の形式を修正したいだけで、変更はしません。
Global.asaxファイルで現在のスレッドカルチャを変更し、たとえば次の日付形式をオーバーライドできます。
using System.Globalization;
using System.Threading;
//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{
CultureInfo newCulture = (CultureInfo) System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
newCulture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
newCulture.DateTimeFormat.DateSeparator = "-";
Thread.CurrentThread.CurrentCulture = newCulture;
}
Web.configで、 以下のドキュメント に従ってタグを設定します
<system.web>
<globalization culture="en-NZ" uiCulture="en-NZ"/>
</system.web>
良い方法は、Web.Configを構成することです。日付形式は、aspxのすべてのコンポーネントに表示されます
<system.web>
<globalization uiCulture="en" culture="en-NZ" />
</system.web>
操作せずにカルチャを設定できます。
using System.Globalization;
using System.Threading;
//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-NZ");
}
それは古い投稿ですが、ここで言及するのが役立つと思いました、私の問題はOPが尋ねたようなものですが、解決策はコントロールパネルからではなくIISで文化が変更されたことです。
IISには独自のカルチャ選択があり、デフォルトではローカルコンピュータのカルチャに従います。しかし、何らかの理由で別の文化に変更され、それらの奇妙な日付形式を取得し始めました。
より多くの答えを探すことができます こちら 。
書式文字列の場合、書式文字/は実際にリテラル「/」に解決されません。代わりに、地域設定で構成されている現在の日付時刻区切り記号に解決されます。 DateTimeFormatInfo.DateSeparatorプロパティを変更してみてください。
詳細については、以下を参照してください: http://msdn.Microsoft.com/en-us/library/8kb3ddd4.aspx