2013-04-26 9 views
5

に基づいて変更私はこのような日付を書き込みウェブサイトました:私のPC(Windows 7のサービスパック1、スペイン文化)の両方でインスタンスは、OS

CultureInfo cultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(c => string.Equals(c.TwoLetterISOLanguageName, MvcApplication.Language)); 
return string.Concat(date.Day, ".", cultureInfo.DateTimeFormat.GetAbbreviatedMonthName(date.Month)); 

をとサーバー(Windows Server 2012、英語の文化)MvcApplication.Languageesですので、リストから取得する文化は:es-ESです。

私は両方とも同じ文字列を書いていると思います(彼らは異なる文化を持っていますが、私はCurrentCultureを使用していません)。しかし、私のPCにはabr、サーバにはAbr.という結果が出ます。

私はこれをMvcApplication.Languageから隔離して試しましたが、LinqPADを使用していますが、それでもまだ異なります。私はAbbreviatedDayNamesAbbreviatedMonthNamesの配列を印刷しました。それらは各コンピュータで異なります。

私は間違ったことをしていますか?これは予期された動作ですか? Windows/User Cultureから完全に独立させるにはどうすればいいですか?

答えて

1

MSDNのthis linkに記載されているように、文化情報は一部のWindowsバージョンによって異なる場合があります。

カルチャ名と識別子は、特定のコンピュータで検出できるカルチャのサブセットのみを表していることに注意してください。 WindowsのバージョンまたはService Packによって、使用可能なカルチャが変更される可能性があります。アプリケーションは、CultureAndRegionInfoBuilderクラスを使用してカスタムカルチャを追加します。ユーザーは、Microsoft Locale Builderツールを使用して独自のカスタムカルチャを追加します。 Microsoft Locale Builderは、CultureAndRegionInfoBuilderクラスを使用してマネージコードで記述されます。あなたには、いくつかの形式が静的になりたい場合は

、あなたは一例として、your own Date Time format設定、独自のCultureInfoオブジェクトを構築し、その動作をカスタマイズすることができ

関連する問題