2009-06-10 15 views
0

ASP.NETアプリケーションでは、cultureをlv-LVに設定しています。すべて正常ですが、デフォルトの短い日付形式は "yyyy.mm.dd"のようです。クライアントは、それが "dd.mm.yyyy"(実際にはLV標準)であることを望んでいます。 ASP.NETは特定のカルチャの日付/時刻設定をどこから取得しますか?どの文化を他の文化に影響を与えずに、単一の文化のために変更することができますか?(アプリケーションはローカライズ可能と思われます)ASP.NETはどこからカルチャ設定を取得しますか?

答えて

3

私はかつて同様の問題を抱えていたし、それを解決:

DateTimeFormatInfo dtfi = (DateTimeFormatInfo)Thread.CurrentThread.CurrentCulture.DateTimeFormat.Clone(); 
dtfi.ShortDatePattern = "dd.MM.yyyy"; 
dtfi.DateSeparator = "."; 
Thread.CurrentThread.CurrentCulture.DateTimeFormat = dtfi ; 
Thread.CurrentThread.CurrentUICulture.DateTimeFormat = dtfi; 

日付形式を除く他のすべての地域設定を手にするその方法を。

このコードは実際にPage基本クラスのOnLoadで実行されました。私はそれが最善の方法であるかどうかは分かりません。

+0

そんなことも私の心を横切った。それでも何とか...間違っているようです。私はハードコーディングが好きではありません。おそらく、その文化や何かのために変更する必要があるいくつかのシステムレジストリキーがありますか? –

+0

その問題は、一部のユーザーがISO標準の日付形式を好む場合です。 –

0

.Netは、DateTimeFormatInfoクラスから特定のカルチャの日付/時刻設定を取得します。変更したDateTimeFormatInfoを使用してCultureInfoのDateTimeFormatプロパティを設定できます。そのカルチャが現在のカルチャであれば、CurrentCultureで設定できます。いずれにせよ、これは作成したCultureInfoにのみ影響し、他の文化には影響しません。 (CultureInfo.GetCultureInfo( "lv-LV")への呼び出しは、読み取り専用のコピーであるため、これらの変更を受け取ることはありません)。そのCultureInfoを必ずしもDateTimeフォーマットメソッドに渡す必要はありません(ToString、ParseExact ) - 明示的なパターンまたはDateTimeFormatInfoを渡すことができます。 LV-LVは、現在のWindows培養である場合

CultureInfo lvLV = new CultureInfo("lv-LV"); 

DateTimeFormatInfo lvLVdtfi = (DateTimeFormatInfo) lvLV.DateTimeFormat.Clone(); 
lvLVdtfi.ShortDatePattern = "dd.MM.yyyy"; 
lvLV.DateTimeFormat = lvLVdtfi; 

DateTime.Now.ToString("d", lvLV);  // short date pattern from modified lv-LV CultureInfo 
DateTime.Now.ToString("d", lvLVdtfi); // short date pattern from modified DateTimeFormatInfo 
DateTime.Now.ToString("dd.MM.yyyy"); // explicit short date pattern 

することは、あなたは、ユーザーの上書きを設定することができます(地域と言語のオプションコントロールパネルintl.cpl使用してフォーマットをカスタマイズする)およびフレームワークは、これをピックアップします。

関連する問題