|
■No101074 (KOZ さん) に返信 > Dim value As Integer = Integer.Parse(DateTimePicker1.Value.ToString("yyyyMMdd"))
この手法は、OS の日付設定が和暦になっている場合に 2022年12月26日が「41226」として取得されてしまう点に注意が必要です。
もしも、OS 設定が和暦モードになっていて、 DateTimePicker も令和 4 年を指してしまっている状態であっても 西暦 2022 年な yyyyMMdd を得たい場合には、 Dim jpCal As New System.Globalization.CultureInfo("ja-JP", False) jpCal.DateTimeFormat.Calendar = New System.Globalization.GregorianCalendar() Dim value As Integer = Integer.Parse(DateTimePicker1.Value.ToString("yyyyMMdd", jpCal)) のように、ToString メソッドを呼ぶ際に、西暦指定のカルチャを明示します。 (または、Year や Month といったプロパティから得るようにする)
毎回カルチャを指定するのが面倒な場合は、 Dim t As System.Threading.Thread = System.Threading.Thread.CurrentThread Dim jpCal As New System.Globalization.CultureInfo("ja-JP", False) jpCal.DateTimeFormat.Calendar = New System.Globalization.GregorianCalendar() t.CurrentCulture = jpCal のようにして、現在のスレッドのカルチャを差し替えておくという手もあります。
|