ここではVB.NETでカスタム日時書式を指定して日時を文字列に変換する方法を紹介します。

カスタム日時書式を指定して変換する

西暦年月日に変換する

Dim days As New DateTime(2021, 3, 5, 20, 30, 15, 123)

' 西暦年(4桁)
Console.WriteLine(days.ToString("yyyy年")) ' 実行結果:2021年

' 西暦年(2桁)
Console.WriteLine(days.ToString("yy年")) ' 実行結果:21年

' 西暦年月(月が1桁の時は左側に0が入る)
Console.WriteLine(days.ToString("yyyy年MM月")) ' 実行結果:2021年03月

' 西暦年月(月が1桁の時でも左側に0が入らない)
Console.WriteLine(days.ToString("yyyy年M月")) ' 実行結果:2021年3月

' 西暦年月日(月日が1桁の時は左側に0が入る)
Console.WriteLine(days.ToString("yyyy年MM月dd日")) ' 実行結果:2021年03月05日

' 西暦年月日(月日が1桁の時でも左側に0が入らない)
Console.WriteLine(days.ToString("yyyy年M月d日")) ' 実行結果:2021年3月5日


和暦年月日に変換する

Dim days As New DateTime(2021, 3, 5, 20, 30, 15, 123)

' カルチャを日本語(ja-JP)にする
Dim ci As New System.Globalization.CultureInfo("ja-JP", False)
ci.DateTimeFormat.Calendar = New System.Globalization.JapaneseCalendar()

' 和暦年月日
Console.WriteLine(days.ToString("gy年MM月dd日", ci))
' 実行結果:令和3年03月15日


時分秒に変換する

Dim days As New DateTime(2021, 3, 5, 20, 30, 15, 123)

' 時間 HH(00~23)
Console.WriteLine(days.ToString("HH時")) ' 実行結果:16時

' 時間 hh(00~12)午前と午後は区別しない
Console.WriteLine(days.ToString("hh時")) ' 実行結果:04時

' 時間 h(0~12)午前と午後は区別しない
Console.WriteLine(days.ToString("h時")) ' 実行結果:4時

' 分 mm(00~59)
Console.WriteLine(days.ToString("mm分")) ' 実行結果:08時

' 分 m(0~59)
Console.WriteLine(days.ToString("m分")) ' 実行結果:8時

' 秒 ss(00~59)
Console.WriteLine(days.ToString("ss分")) ' 実行結果:05時

' 秒 s(0~59)
Console.WriteLine(days.ToString("s分")) ' 実行結果:5時


ミリ秒に変換する

Dim days As New DateTime(2021, 3, 5, 2, 8, 5, 123)

' 1/10秒 f(0の時は"0"となる)
Console.WriteLine(days.ToString("m分s秒fミリ秒")) ' 実行結果:8分5秒1ミリ秒

' 1/100秒 ff(0の時は"0"となる))
Console.WriteLine(days.ToString("m分s秒ffミリ秒")) ' 実行結果:8分5秒12ミリ秒

' 1/1000秒 fff(0の時は"0"となる)
Console.WriteLine(days.ToString("m分s秒fffミリ秒")) ' 実行結果:8分5秒123ミリ秒

' 1/10000秒 ffff(0の時は"0"となる)
Console.WriteLine(days.ToString("m分s秒ffffミリ秒")) ' 実行結果:8分5秒1230ミリ秒

' 1/10000秒 FFFF(0の時は何も表示しない)
Console.WriteLine(days.ToString("m分s秒FFFFミリ秒")) ' 実行結果:8分5秒123ミリ秒


以上、VB.NETでカスタム日時書式を指定して日時を文字列に変換する方法について解説しました。