2012-12-13 7 views
8

まあ、 私は文化のデフォルトの日付形式を取得しようとしています。文化のデフォルトの日付形式を見つける方法

たとえば、en-usには「m/dd/yyyy」、en-uk「d/mm/yyyy」があります。文化はクライアントマシンの何でもかまいません。 Dateformatは何でもかまいません。 cultureのようにen-usですが、dateformatはdd-MMM-yyyyです。

このケースでは、ShortDateformatStringをm/dd/yyyyとしてdd-MMM-yyyyにしたいと考えています。

私が使用して、すべての文化のためにこれを行う試してみました:

string _cultureInfo = CultureInfo.CurrentCulture.IetfLanguageTag; 
CultureInfo shortDatefomatString = new CultureInfo(_cultureInfo); 
string old = shortDatefomatString.DateTimeFormat.ShortDatePattern; 

が、それは常にMT dd-MMM-yyyyを返します。私は、マシン上で設定されていないデフォルトのものが必要です。

答えて

3

私は問題があなたが望む文化を取り戻す方法であると信じています。

これはあなたの既定のカルチャ設定を与える必要があります:文字列で1を構築

var cultureLanguageTag = CultureInfo.CurrentCulture.IetfLanguageTag; 
var defaultCulture = CultureInfo.GetCultureInfoByIetfLanguageTag(cultureLanguageTag); 

を培養名で使用されることを想定していることは、IETFタグでそれを動作する必要がある場合、私は知りませんその場合、現在の文化を戻しているかもしれません。

+0

これは正しく動作し、正しい結果を出力します。デフォルトの日付書式。現在の文化の場合は – user1899600

1

MSDNによると、CurrentCultureは、次のいずれかの方法で文化を返します。

  1. それがnullでない場合にはCultureInfo.DefaultThreadCurrentCultureを返します。 (特に文化を設定しない限り、これは常にnullになります)
  2. WindowsのGetUserDefaultLocaleName関数を呼び出した結果を返します。これは、コントロールパネルで設定したすべての文化を返します。

コントロールパネルのカルチャを変更すると、コンピュータを再起動するまで変更内容が表示されないことがあります。

文化に正しい日付が表示されているかどうかをテストするには、CultureInfo.CreateSpecificCulture("en-US");(「en-US」を他の国の文化コードに置き換えて)を使用して、システムカルチャを使用する代わりに手動でカルチャを選択できます。

+0

CreateSpecificCultureまた、唯一の現在の設定を与えます。答えをありがとう。 – user1899600

0

以下は私のために働くようです。

Console.WriteLine(CultureInfo.GetCultureInfo("en-us").DateTimeFormat.ShortDatePattern); 
Console.WriteLine(CultureInfo.GetCultureInfo("en-gb").DateTimeFormat.ShortDatePattern); 

出力: M/D/YYYY DD/MM/YYYY

+0

が同じであり、Shortdate形式が異なっています。出力は異なります。 – user1899600

関連する問題