0

ASP.NET アプリケーションでは、カルチャを lv-LV に設定しています。すべて問題ありませんが、デフォルトの短い日付形式は「yyyy.mm.dd」のようです。クライアントは、それを「dd.mm.yyyy」(実際には LV 標準) にしたいと考えています。ASP.NET は特定のカルチャの日付/時刻設定をどこで取得しますか? 他のカルチャに影響を与えることなく、単一のカルチャに対してどのように変更できますか (アプリケーションはローカライズ可能である必要があります)。

4

2 に答える 2

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 で実際に実行されました。それが最善の方法かどうかはわかりません。

于 2009-06-10T13:42:58.663 に答える
0

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

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

lv-LV が現在の Windows カルチャである場合は、ユーザー オーバーライドを設定できます (地域と言語のオプション コントロール パネルの intl.cpl を使用して形式をカスタマイズします)。フレームワークはこれを取得します。

于 2009-06-10T17:02:27.107 に答える