文字列からTimeSpanに変換するには、Parseメソッド・TryParseメソッドを使うことが出来ます。 また、厳密に書式を指定して文字列からTimeSpanへ変換するには、ParseExactメソッド・TryParseExactメソッドを使うことが出来ます。 なお、これらのメソッドはいずれも.NET Framework 4から使用可能になっています。
TimeSpan.TryParse/TryParseExactメソッドで文字列からTimeSpanに変換する
using System;
class Sample {
static void Main()
{
var arr = 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]");
foreach (var s in arr) {
// TryParseメソッドで変換を試みる
TimeSpan ts;
if (TimeSpan.TryParse(s, out ts))
// 変換できた場合は結果を表示
Console.WriteLine("{0} -> {1}", s, ts);
else
Console.WriteLine("{0} -> (invalid format)", s);
}
Console.WriteLine();
Console.WriteLine("[TryParseExact]");
foreach (var s in arr) {
// TryParseExactメソッドで書式を指定して変換を試みる
var formats = new string[] {
"G", // "一般的な形式"を表す書式指定子
"d'日'h'時間'm'分's'秒'fff", // カスタム書式指定子の組み合わせ
};
TimeSpan ts;
if (TimeSpan.TryParseExact(s, formats, null, out ts))
// 変換できた場合は結果を表示
Console.WriteLine("{0} -> {1}", s, ts);
else
Console.WriteLine("{0} -> (invalid format)", s);
}
}
}
実行結果
[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*メソッドでは、現在のカルチャの影響を受けるもの(ローカライズされる書式)が存在します。 これらのメソッドと文字列化に関する詳細な動作については日時・文字列の変換と書式でも解説しているので、あわせてご覧ください。