文字列からTimeSpanに変換するには、Parseメソッド・TryParseメソッドを使うことが出来ます。 また、厳密に書式を指定して文字列からTimeSpanへ変換するには、ParseExactメソッド・TryParseExactメソッドを使うことが出来ます。 なお、これらのメソッドはいずれも.NET Framework 4から使用可能になっています。
TimeSpan.TryParse/TryParseExactメソッドで文字列からTimeSpanに変換する
Imports System
Class Sample
Shared Sub Main()
Dim arr() As String = New String() { _
"1.2:34:5.678", _
"1:2:34:5.678", _
"1日2時間34分5秒678", _
"01日02時間34分05秒678" _
}
Console.WriteLine("[TryParse]")
For Each s As String In arr
' TryParseメソッドで変換を試みる
Dim ts As TimeSpan
If TimeSpan.TryParse(s, ts) Then
' 変換できた場合は結果を表示
Console.WriteLine("{0} -> {1}", s, ts)
Else
Console.WriteLine("{0} -> (invalid format)", s)
End If
Next
Console.WriteLine()
Console.WriteLine("[TryParseExact]")
For Each s As String In arr
' TryParseExactメソッドで書式を指定して変換を試みる
Dim formats() As String = New String() { _
"G", _
"d'日'h'時間'm'分's'秒'fff" _
}
Dim ts As TimeSpan
If TimeSpan.TryParseExact(s, formats, Nothing, ts)
' 変換できた場合は結果を表示
Console.WriteLine("{0} -> {1}", s, ts)
Else
Console.WriteLine("{0} -> (invalid format)", s)
End If
Next
End Sub
End Class
実行結果
[TryParse] 1.2:34:5.678 -> 1.02:34:05.6780000 1:2:34:5.678 -> 1.02:34:05.6780000 1日2時間34分5秒678 -> (invalid format) 01日02時間34分05秒678 -> (invalid format) [TryParseExact] 1.2:34:5.678 -> (invalid format) 1:2:34:5.678 -> 1.02:34:05.6780000 1日2時間34分5秒678 -> 1.02:34:05.6780000 01日02時間34分05秒678 -> 1.02:34:05.6780000
ToStringメソッドおよびParse*メソッドでは、現在のカルチャの影響を受けるもの(ローカライズされる書式)が存在します。 これらのメソッドと文字列化に関する詳細な動作については日時・文字列の変換と書式でも解説しているので、あわせてご覧ください。