指定された形式を使用して正確な日時を解析するParseExact
メソッドを使用している場合、なぜ IFormatProvider オブジェクトを提供する必要があるのでしょうか? その背後にあるポイントは何ですか?
例えば:
DateTime.ParseExact(dateString, format, provider);
なぜprovider
ここが必要なのですか?
指定された形式を使用して正確な日時を解析するParseExact
メソッドを使用している場合、なぜ IFormatProvider オブジェクトを提供する必要があるのでしょうか? その背後にあるポイントは何ですか?
例えば:
DateTime.ParseExact(dateString, format, provider);
なぜprovider
ここが必要なのですか?
IFormatProvider オブジェクトを提供する必要があるのはなぜですか? その背後にあるポイントは何ですか?
これにより、カルチャ固有のオプションが可能になります。特に:
:
パターンでorを使用でき/
ます。これは、それぞれ時間区切りまたは日付区切りのカルチャ固有の文字を意味します最後のポイントの例として、米国またはサウジアラビアのカルチャで解釈されたまったく同じ文字列と形式を考えてみましょう。
using System;
using System.Globalization;
class Test
{
static void Main()
{
CultureInfo us = new CultureInfo("en-US");
CultureInfo sa = new CultureInfo("ar-SA");
string text = "1434-09-23T15:16";
string format = "yyyy'-'MM'-'dd'T'HH':'mm";
Console.WriteLine(DateTime.ParseExact(text, format, us));
Console.WriteLine(DateTime.ParseExact(text, format, sa));
}
}
米国のカルチャで解析する場合は、グレゴリオ暦が使用されますが、サウジアラビアのカルチャで解析する場合は、Um Al Qura カレンダーが使用されます。ここで、1434 は現在の年です (この回答を書いているとき)。