2017-05-24 10 views
0

ドキュメントFormatting Date and Time for a Specific CultureDateTime書式とニュートラルカルチャ

によるDateTime構造は、アプリケーションが日時タイプに文化に敏感な操作を実行できるようにするメソッドを提供します。アプリケーションでは、DateTimeFormatInfoクラスを使用して、文化に基づいてDateTime型を書式設定して表示できます。たとえば、DateTimeFormatInfo.ShortDatePatternを使用すると、2001年2月1日の日付は、英語(米国)、 "en-US"、カルチャーおよび01/02/2001の英語(イギリス)、 "en-GB"、文化。

DateTimeFormatInfoオブジェクトは、特定文化のためか、不変文化のためではなく、ニュートラル文化のために作成することができます。 ニュートラルカルチャは、正しい日付形式を表示するのに十分な情報を提供しません。アプリケーションがニュートラルカルチャを使用してDateTimeFormatInfoオブジェクトを作成しようとすると、例外がスローされます。

しかし、次のように例外は発生しません。特定の文化が指定されていないため、日付の書式設定の方法についての情報はどこにありますか?

Console.WriteLine(DateTime.Now.ToString("d", new CultureInfo("fr")));

更新

あなたは一例new CultureInfo("fr-FR")またはnew CultureInfo("fr")のために、特定の文化やニュートラルカルチャ、 のインスタンスを作成することができます。

DateTime.ToString方法においては

のToString(String)メソッドは、現在のカルチャの書式設定規則を使用する特定の形式で日付と時刻の値の文字列表現を返し言います。詳細については、CultureInfo.CurrentCultureを参照してください。

そしてCultureInfoドキュメントには、このプロパティとその関連オブジェクトによって返され

CultureInfoオブジェクトは、日付、時刻、数値、通貨値、テキストのソート順、ケーシングのデフォルトフォーマットを決定すると言います慣習、および文字列の比較。

アップデート2

はい、そう上記参照MSDNページは時代遅れであり、フレームワークの動作が変更されました。

私は.NET 3.0、私は次の例外を取得をターゲットにこのコードを実行すると、私は次のコード

var culture = new CultureInfo("en"); 
Console.WriteLine(DateTime.Now.ToString("d", culture)); 

を持っています。しかし、.NET 4.6.2ではうまくいきます。

An unhandled exception of type 'System.NotSupportedException' occurred in mscorlib.dll 

Additional information: Culture 'en' is a neutral culture. It cannot be used in formatting and parsing and therefore cannot be set as the thread's current culture. 

ですから、元の質問に戻ってください。ニュートラルカルチャーを使うと、DateTime形式の情報はどこから来ますか?

+0

「new CultureInfo( "fr") 'が何であるか教えてください。 –

+0

'new CultureInfo(" fr ")' – Pikoh

+0

文化は中立であっても、特定であってもかまいません。 'en-US'や' fr-FR'は特定の文化ですが、 'en'や' fr'は中立的な文化であり、日付、数字などのフォーマット方法についての十分な情報は提供していません。https:詳細については、//msdn.microsoft.com/en-us/library/ff647353.aspxを参照してください。 – erdinger

答えて

2

the most recent version of the MSDN doc on DateTimeFormatInfoから:

それが特定の国/地域の独立しているためしかし、ニュートラルカルチャは、カルチャ固有の書式情報を欠いています。 .NET Frameworkは、DateTimeFormatInfoオブジェクトに汎用値を設定するのではなく、中立文化の子である特定のカルチャの書式設定規則を反映するDateTimeFormatInfoオブジェクトを返します。たとえば、中立enカルチャのDateTimeFormatInfoオブジェクトは、en-USカルチャの書式設定規則を反映し、frカルチャのDateTimeFormatInfoオブジェクトはfr-FRカルチャの書式設定規則を反映します。

これは、.NET 4 What's New in Globalization and Localization資料に記載されている:

アプリケーションは、DateTimeFormatInfo.FirstDayOfWeek中性培養プロパティにアクセスしようとした場合、.NET Frameworkの以前のバージョンは例外をスローしました。 .NET Framework 4では、ニュートラルカルチャプロパティは、その中立カルチャにとって最も支配的な特定のカルチャを反映する値を返します。たとえば、フランスのニュートラルロケールはフランス語(フランス)からそのプロパティのほとんどの値を取得します。 FirstDayOfWeekプロパティは、DayOfWeek.Mondayを返します。DayOfWeek.Mondayは、フランス(フランス)文化におけるそのプロパティの値を反映します。

+0

この情報をご利用いただきありがとうございます。 – erdinger