.NET DateTime ToString Culture en-USは、一部のボックスで4桁の年を出力し、他のボックスで2桁の年を出力します

ビル・ステイブ

米国文化「en-US」の.NETのDateTimeToString()に、異常/不整合のように見えるものがあります。一部のWindowsシステムでは、4桁の年が表示され、他のシステムでは、同じコード同じカルチャ、en-USに対して2桁の年が表示されます

Windows 2016サーバーでは、以下のコードは1999年10月25日を表示します。これは私たちが期待していることです。

一部のWindows10 Proワークステーションでは、次のコードは199910月25日を表示しますが、その他のコードは9910月25日を表示します。ボックス間の原因/違いはまだ特定されていません。一部のボックスはFallCreatorの更新にアップグレードされ、一部には.NET 4.7.1がインストールされ、99年10月25日を表示する1つのボックスは数か月間更新されていません(このテストを実行するためだけにオンにしました)。

この問題を示すコードは次のとおりです。

var date = DateTime.Parse("10/25/1999", CultureInfo.InvariantCulture);

// correctly, always displays 1999
Console.WriteLine(date.Year);
// correctly, always displays 10/25/1999
Console.WriteLine(date.ToString("d", CultureInfo.InvariantCulture));

// **INCONSISTENT--displays 10/25/1999 on some boxes and 10/25/99 on others**
Console.WriteLine(date.ToString("d", new CultureInfo("en-US")));

// **INCONSISTENT--displays 10/25/1999 12:00:00 AM on some boxes and 10/25/99 12:00:00 AM on others**
Console.WriteLine(date.ToString(new CultureInfo("en-US")));

// Force formatting--correctly, always displays 10/25/1999
Console.WriteLine(date.ToString("MM/dd/yyyy", new CultureInfo("en-US")));  

v2からv4.7.1までの範囲の.NETFrameworkに対して、x64モードとx86モードの両方でテストしました。これらを変更しても、表示される桁数は変わりません。en-USカルチャに表示される桁数は、OSの設定に基づいて構成されているように見えます。

私はおそらく明らかな何かを見逃しています。あなたの助けと洞察に感謝します。

ps DateTime.Parseの奇妙な振る舞いのようスレッドを見ましたが、私たちが見ている問題はToStringにあるので、それは問題ではないようです。解析は正常に機能します。

リック

MSDNから

ユーザーは、コントロールパネルの地域および言語オプションの部分を使用して、Windowsの現在の文化に関連する値の一部を上書きすることを選択できます。たとえば、ユーザーは日付を別の形式で表示したり、カルチャのデフォルト以外の通貨を使用したりすることを選択できます。名前に関連付けられたカルチャー識別子が現在のWindowsカルチャーのカルチャー識別子と一致する場合、このコンストラクターは、DateTimeFormatプロパティによって返されるDateTimeFormatInfoインスタンスのプロパティのユーザー設定やNumberFormatInfoのプロパティなど、これらのオーバーライドを使用するCultureInfoオブジェクトを作成します。 NumberFormatプロパティによって返されるインスタンス。たとえば、ユーザー設定がCultureInfoに関連付けられたカルチャと互換性がない場合、

したがって、次のコンストラクターを使用したいと思います

public CultureInfo(string name, bool useUserOverride)

に設定useUserOverridefalseます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ