日付型への変換
文字列型を日付型へ変換する
文字列型を日付型へ変換するには、DateTimeクラスのParseメソッドを使用します。
DateTime.Parse(文字列)
それではサンプルを見てみましょう。
Console.WriteLineを使って、Parseの動作をコンソールに出力します。
1 2 3 4 5 6 7 |
Dim dt1 As DateTime = DateTime.Parse("2019/11/01 12:11:22") Dim dt2 As DateTime = DateTime.Parse("2019/11/01") Dim dt3 As DateTime = DateTime.Parse("12:11:22") Console.WriteLine(dt1) Console.WriteLine(dt2) Console.WriteLine(dt3) |
上記を実行した結果がこちらです。
2019/11/01 12:11:22
2019/11/01 00:00:00
2019/11/18 12:11:22
実行結果がコンソールに出力されました。
文字列が日付型に変換されているのがわかります。
なお、日付のみを指定した場合は時間は0時となり、時間のみを指定した場合は日付が本日になるため注意が必要です。
フォーマットを指定して日付型へ変換する
DateTimeクラスのParseExactメソッドを使用すれば、フォーマットを指定して日付型へ変換することが可能です。
Parseメソッドでは変換できない書式の文字列も変換することが可能になります。
DateTime.ParseExact(文字列, フォーマット, 書式情報)
それではサンプルを見てみましょう。
Console.WriteLineを使って、ParseExactの動作をコンソールに出力します。
1 2 3 |
Dim dt As DateTime = DateTime.ParseExact("20191101121122", "yyyyMMddHHmmss", Nothing) Console.WriteLine(dt) |
上記を実行した結果がこちらです。
2019/11/01 12:11:22
実行結果がコンソールに出力されました。
このように、特殊な形式の文字列でも日付型に変換されているのがわかります。
変換可能かチェックしてから変換する
日付型へ変換する際、変換できない想定外の値を引数として渡してしまった場合、例外となってしまいます。
それを防ぐには、変換前に変換可能かどうかのチェックを行う必要があります。
変換可否のチェックには、TryParseメソッドを使用します。
DateTime.TryParse(文字列, DateTime型変数)
それではサンプルを見てみましょう。
Console.WriteLineを使って、TryParseの動作をコンソールに出力します。
1 2 3 4 5 6 |
Dim dt As DateTime Dim flg1 As Boolean = DateTime.TryParse("2019/11/01", dt) Dim flg2 As Boolean = DateTime.TryParse("100", dt) Console.WriteLine(flg1) Console.WriteLine(flg2) |
上記を実行した結果がこちらです。
True
False
実行結果がコンソールに出力されました。
文字列が日付型に変換できるかどうかがわかります。
この結果を使用し、以下のようにif文で判定することで、例外を防ぎ変換後の値を使用することが可能です。
なお、変換可能な場合は第2引数で指定した変数に変換後の値が入ります。
1 2 3 4 5 6 |
Dim dt As DateTime Dim flg As Boolean = DateTime.TryParse("2019/11/01", dt) If flg = true Then Console.WriteLine(dt) End If |
以上が、文字列型を日付型へ変換するメソッド「Parse, ParseExact」と、変換できるかをチェックする「TryParse」の使い方です。
ぜひ参考にしてみてください。