9

さて、私は文化のデフォルトの日付形式を取得しようとしています。

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

したがって、この場合、ShortDateformatStringをdd-MMM-yyyyではなくm / dd/yyyyとして取得します。

私は以下を使用して、すべての文化に対してこれを実行しようとしました。

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

ただし、常にmtを返しますdd-MMM-yyyy。マシンに設定されているものではなく、デフォルトのものが必要です。

4

3 に答える 3

4

問題は、希望する文化をどのように取得するかということだと思います。

これにより、デフォルトのカルチャ設定が得られます。

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

文字列を使用して作成すると、カルチャ名で使用されることになっています。IETFタグで機能するかどうかはわかりません。その場合は、現在のカルチャを返している可能性があります。

于 2012-12-13T02:41:10.590 に答える
1

MSDNによるとCurrentCulture、次のいずれかの方法でカルチャを返します。

  1. CultureInfo.DefaultThreadCurrentCulturenullでない場合は戻ります。(特にカルチャを設定しない限り、これは常にnullになることに注意してください。)
  2. WindowsのGetUserDefaultLocaleName関数を呼び出した結果を返します。これにより、コントロールパネルで設定したカルチャが返されます。

コントロールパネルでカルチャを変更した場合、コンピュータを再起動するまで変更が表示されない可能性があります。

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

于 2012-12-13T02:39:00.857 に答える
0

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

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

出力:M / d / yyyy dd / MM / yyyy

于 2012-12-13T03:35:28.050 に答える