Private jp As New System.Globalization.CultureInfo("ja-JP") '日本のカルチャ Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim dic As New Dictionary(Of String, System.Globalization.Calendar)() Dim dfi = DirectCast(jp.DateTimeFormat.Clone(), System.Globalization.DateTimeFormatInfo) For Each cal In jp.OptionalCalendars '日本のカルチャで使用可能なカレンダーを列挙 dfi.Calendar = cal dic.Add(dfi.NativeCalendarName, cal) Debug.WriteLine(cal.GetType().FullName) Next ComboBox1.DisplayMember = "Key" ComboBox1.ValueMember = "Value" ComboBox1.DataSource = dic.ToArray() '使用可能なカレンダーを ComboBox に列挙してみます End Sub Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged ' カレンダーを変更してみてみます Dim cal = TryCast(ComboBox1.SelectedValue, System.Globalization.Calendar) If cal Is Nothing Then TextBox1.Text = "" TextBox2.Text = "" Else jp.DateTimeFormat.Calendar = cal System.Globalization.CultureInfo.CurrentCulture = jp TextBox1.Text = Now.ToString("G") ' CurrentCulture を差し替えるのではなく、Format あるいは ToString 時に ' カルチャを指定する方法もあります。この方法だと、現在のカルチャに依存せずに ' 書式を切り替えられますので、たとえば「令和2年(2020年)」などのような ' 複数カルチャの文字列を扱う際にも応用できます。 TextBox2.Text = String.Format(jp, "{0:ggg yyyy/MM/dd HH:mm:ss.fffffff}", Now) End If End Sub