月名や曜日名を英語などその他の言語での表記で取得する目的にも書式プロバイダを使うことができます。 次の例では、書式指定子として曜日の完全名dddd
、月の完全名MMMM
、書式プロバイダとしてen-US(英語/アメリカ合衆国)、de-DE(ドイツ語/ドイツ)、ja-JP(日本語/日本)を指定することで、英語・ドイツ語・日本語での曜日名・月名を取得・表示しています。
CultureInfoを書式プロバイダとして指定して各言語での曜日名・月名を取得する
using System;
using System.Globalization;
class Sample {
static void Main()
{
// 書式プロバイダとして使用するカルチャ
var enus = new CultureInfo("en-US");
var dede = new CultureInfo("de-DE");
var jajp = new CultureInfo("ja-JP");
// カルチャ毎に曜日の完全名'dddd'で文字列化した結果を取得する
Console.WriteLine("{0,-20}|{1,-20}|{2}", enus.Name, dede.Name, jajp.Name);
Console.WriteLine(new string('-', 60));
for (var day = 0; day < 7; day++) {
var dt = (new DateTime(2013, 3, 31)).AddDays(day); // 日曜日から土曜日のDateTimeを作成
Console.WriteLine("{0,-20}|{1,-20}|{2}",
dt.ToString("dddd", enus),
dt.ToString("dddd", dede),
dt.ToString("dddd", jajp));
}
// カルチャ毎に月の完全名'MMMM'で文字列化した結果を取得する
Console.WriteLine(new string('-', 60));
for (var month = 1; month <= 12; month++) {
var dt = new DateTime(2013, month, 1); // 1月から12月のDateTimeを作成
Console.WriteLine("{0,-20}|{1,-20}|{2}",
dt.ToString("MMMM", enus),
dt.ToString("MMMM", dede),
dt.ToString("MMMM", jajp));
}
}
}
実行結果
en-US |de-DE |ja-JP ------------------------------------------------------------ Sunday |Sonntag |日曜日 Monday |Montag |月曜日 Tuesday |Dienstag |火曜日 Wednesday |Mittwoch |水曜日 Thursday |Donnerstag |木曜日 Friday |Freitag |金曜日 Saturday |Samstag |土曜日 ------------------------------------------------------------ January |Januar |1月 February |Februar |2月 March |März |3月 April |April |4月 May |Mai |5月 June |Juni |6月 July |Juli |7月 August |August |8月 September |September |9月 October |Oktober |10月 November |November |11月 December |Dezember |12月