ASP.NETでどのように日付形式をグローバルに設定しますか?
-
08-07-2019 - |
質問
ASP.NETで日付形式をグローバルに設定する方法
ローカルマシンとサーバーの地域設定は「英語(ニュージーランド)」に設定されています。
dd / MM / yyyy
で日付をフォーマットすると、たとえば今日の 19/11/2008
が表示されると予想されます。
最近まで、それが実際にローカルマシンとサーバーの両方から取得したものです。
ごく最近、なんらかの謎の理由で、私たちのローカルマシンはこれまでになくわずかに変更されました。 「英語(ニュージーランド)」に設定されているにもかかわらず、日付区切り文字が /
から-
に変更されました! 「英語(ニュージーランド)」と表示されているサーバーでは、同じ変更は行われていません。および日付区切り記号の /
。
だから今、私のローカルマシンでは、 dd / MM / yyyy
の形式で、 19/11/2008 <の代わりに
19-11-2008
/ code>。
これは少々戸惑います。
これまでのところ私が見ることができる唯一の方法は、スラッシュをエスケープし、フォーマットを 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には独自のカルチャ選択があり、デフォルトではローカルコンピューターのカルチャに従います。しかし、何らかの理由で別の文化に変更され、それらの奇妙な日付形式を取得し始めました。
他の回答はこちらで探すことができますa>。
フォーマット文字列の場合、フォーマット文字/は実際にはリテラル&quot; /&quot;に解決されません。あなたが期待するように。代わりに、地域設定で構成されている現在の日付時刻区切り記号に解決されます。 DateTimeFormatInfo.DateSeparatorプロパティを変更してみてください。
詳細については、 http://msdn.microsoft.comを参照してください。 /en-us/library/8kb3ddd4.aspx