月名や曜日名を英語などその他の言語での表記で取得する目的にも書式プロバイダを使うことができます。 次の例では、書式指定子として曜日の完全名dddd
、月の完全名MMMM
、書式プロバイダとしてen-US(英語/アメリカ合衆国)、de-DE(ドイツ語/ドイツ)、ja-JP(日本語/日本)を指定することで、英語・ドイツ語・日本語での曜日名・月名を取得・表示しています。
CultureInfoを書式プロバイダとして指定して各言語での曜日名・月名を取得する
Imports System
Imports System.Globalization
Class Sample
Shared Sub Main()
' 書式プロバイダとして使用するカルチャ
Dim enus As New CultureInfo("en-US")
Dim dede As New CultureInfo("de-DE")
Dim jajp As New CultureInfo("ja-JP")
' カルチャ毎に曜日の完全名'dddd'で文字列化した結果を取得する
Console.WriteLine("{0,-20}|{1,-20}|{2}", enus.Name, dede.Name, jajp.Name)
Console.WriteLine(New String("-"c, 60))
For day As Integer = 0 To 6
Dim dt As DateTime = (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))
Next
' カルチャ毎に月の完全名'MMMM'で文字列化した結果を取得する
Console.WriteLine(New String("-"c, 60))
For month As Integer = 1 To 12
Dim dt As 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))
Next
End Sub
End Class
実行結果
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月