
今回は、文字列型を日付型に変換する方法を紹介します。
日付型から文字列への変換はこちらで紹介していますので、是非参考にしてみてください。
それではさっそくやっていきましょう。
DateTime.Parseを利用した変換
文字列型を日付型に変換するには、基本的に「DateTime.Parse」を利用しましょう。
使い方はこちらになります。
日付型 = DateTime.Parse(文字列)
これだけで日付型に変換することができます。
実際に
「yyyy/MM/dd」「yyyy/MM/dd HH:mm:ss」「yyyy年MM月dd日」「yyyy年MM月dd日 HH時mm分ss秒」
の4パターンを変換してみましょう。
Dim str_date As String
Dim dt_date As DateTime
'yyyy/MM/ddを変換
str_date = "2021/01/09"
dt_date = DateTime.Parse(str_date)
Console.WriteLine(dt_date) '2021/01/09 0:00:00
'yyyy/MM/dd HH:mm:ssを変換
str_date = "2021/01/09 10:15:20"
dt_date = DateTime.Parse(str_date)
Console.WriteLine(dt_date) '2021/01/09 10:15:20
'yyyy年MM月dd日を変換
str_date = "2021年01月09日"
dt_date = DateTime.Parse(str_date)
Console.WriteLine(dt_date) '2021/01/09 0:00:00
'yyyy年MM月dd日 HH時mm分ss秒を変換
str_date = "2021年01月09日 10時15分20秒"
dt_date = DateTime.Parse(str_date)
Console.WriteLine(dt_date) '2021/01/09 10:15:20
結果
2021/01/09 0:00:00
2021/01/09 10:15:20
2021/01/09 0:00:00
2021/01/09 10:15:20
結果を見ると、日付型に変換できていますね。
年月日のみを日付型に変換すると、「00:00:00」に変換されています。
yyyyMMddを日付型に変換
業務を行っていると、よく「yyyyMMdd」の文字列型を日付型に変換する時がよくありますが、
「yyyyMMdd」を先ほどの「DateTime.Parse」で変換するとエラーが発生してしまいます。
「DateTime.Parse」ではなく「DateTime.ParseExact」を利用すると変換することができます。
日付型= DateTime.ParseExact(文字列型, "日付フォーマット", System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None)
初心者の方は、3つ目の引数と4つ目の引数は、あまり気にせずそのままコピーしてください!
気になる方は調べてみてくださいね。
それでは、実際に使用してみましょう。
Dim str_date As String
Dim dt_date As DateTime
'yyyyMMddを変換
str_date = "20210109"
dt_date = DateTime.ParseExact(str_date, "yyyyMMdd", System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None)
Console.WriteLine(dt_date) '2021/01/09 0:00:00
'yyyyMMdd HHmmssを変換
str_date = "20210109 101520"
dt_date = DateTime.ParseExact(str_date, "yyyyMMdd HHmmss", System.Globalization.DateTimeFormatInfo.InvariantInfo, System.Globalization.DateTimeStyles.None)
Console.WriteLine(dt_date) '2021/01/09 10:15:20
結果
2021/01/09 0:00:00
2021/01/09 10:15:20
「yyyyMMdd」「yyyyMMdd HHmmss」も無事変換することができました。
「yyyyMMdd」の変換は非常によく使うのですが、いつも忘れてしまうので備忘録として残しておきました!
是非参考にしてみてください。
文字列を加工する方法
最後におまけで、文字列を加工してから日付型に変換する方法を紹介しておきます。
例として、「yyyyMMdd」を変換するときに「yyyy/MM/dd」の加工してから、日付型に変換する方法を紹介しておきます。
'yyyyMMdd→yyyy/MM/dd 変換
str_date = "20210109"
str_date = str_date.Insert(6, "/").Insert(4, "/")
dt_date = DateTime.Parse(str_date)
Console.WriteLine(dt_date) '2021/01/09 0:00:00
結果
2021/01/09 0:00:00
「yyyy/MM/dd」の形に加工してからなら「DateTime.Parse」を利用することができました。
こちらはあくまで一例で、文字列を日付型にどうしても変換できない場合は、
一度文字列を加工してから、日付型に変換することで解決できる場合もありますので是非覚えておきましょう。
まとめ
基本的には「DateTime.Parse」で変換することが可能です。
「yyyyMMdd」の変換は「DateTime.ParseExact」を利用しましょう。
またどうしても変換できないときは、一度文字列を加工してから変換するとできるかも!