文字列からDateTime・DateTimeOffsetへの変換には、Parseメソッドの他にもTryParseメソッドを使うことができます。 このメソッドでは変換できない場合にFormatExceptionをスローする代わりに、単に変換できなかったことを表すfalseを返します。 、DateTime・DateTimeOffsetに変換できた場合はTryParseメソッドの第二引数であるoutパラメータに変換結果が代入され、戻り値としてtrueが返されます。
DateTime/DateTimeOffset.TryParseメソッドで文字列からの変換を試みる
Imports System
Class Sample
Shared Sub Main()
Dim inputs() As String = New String() { _
"29 Feb 2012", _
"31 Feb 2013", _
"27:00:00", _
"2013-04-01T15:00:30.1230000+15:00", _
"0123456" _
}
For Each input As String In inputs
Dim dt As DateTime
' 文字列からDateTimeへの変換を試みる
If DateTime.TryParse(input, dt)
Console.WriteLine("{0,-35} -> {1}", input, dt)
Else
Console.WriteLine("{0,-35} -> (invalid format)", input)
End If
Next
Console.WriteLine()
For Each input As String In inputs
Dim dto As DateTimeOffset
' 文字列からDateTimeOffsetへの変換を試みる
If DateTimeOffset.TryParse(input, dto)
Console.WriteLine("{0,-35} -> {1}", input, dto)
Else
Console.WriteLine("{0,-35} -> (invalid format)", input)
End If
Next
Console.WriteLine()
End Sub
End Class
実行結果
29 Feb 2012 -> 2012/02/29 0:00:00 31 Feb 2013 -> (invalid format) 27:00:00 -> (invalid format) 2013-04-01T15:00:30.1230000+15:00 -> 2013/04/02 0:00:30 0123456 -> (invalid format) 29 Feb 2012 -> 2012/02/29 0:00:00 +09:00 31 Feb 2013 -> (invalid format) 27:00:00 -> (invalid format) 2013-04-01T15:00:30.1230000+15:00 -> (invalid format) 0123456 -> (invalid format)