ToStringメソッドでは、書式に加えて引数に書式プロバイダと呼ばれるものを指定できます。 書式プロバイダとは、書式指定子からそれにに対応する形式の文字列に変換するためのものです。 その一例としてCultureInfoクラスは書式プロバイダとして機能します。 このため、CultureInfoをToStringメソッドの引数に指定することにより、特定カルチャでの形式に従ってDateTime・DateTimeOffsetを文字列化することができます。
次の例では、書式指定子として一般的な日付と日時の形式G
を指定し、書式プロバイダにはen-US(英語/アメリカ合衆国)、de-DE(ドイツ語/ドイツ)、ja-JP(日本語/日本)をそれぞれ指定し、その結果の違いを表示しています。
このように、カルチャによって「一般的な日付と日時の形式」として定義されている書式には違いがあるため、同じ書式指定子でもカルチャによって異なる文字列が返されます。 書式プロバイダを指定しなかった場合(省略した場合およびnull
/Nothing
を指定した場合)は、現在のスレッドに設定されているカルチャが書式プロバイダとして使用されます。
また、既に解説したとおり、書式にはローカライズされるものとそうでないものが存在します。 上記の例で使用した一般的な日付と日時の形式G
はローカライズされる書式ですが、ISO8601(W3C-DTF)形式o
やRFC1123形式r
などはローカライズされない書式であるため、異なるカルチャを書式プロバイダとして指定しても得られる結果は常に同じとなります。
書式と書式プロバイダについては文字列と書式、カルチャと書式についてカルチャの基本・種類・カルチャ情報の取得およびカルチャと書式・テキスト処理・暦でより詳しく解説しているので、合わせてご覧ください。