以下の形式の文字列がいくつかあります。
「1:15」
「:45」
「1:30:45」
それらを TimeSpan に変換する必要がありますが、それらの一部 (たとえば最初のもの) を TimeSpan.Parse すると、1 時間 15 分として返されます。
どんなアドバイスでも大歓迎です!
のオーバーロードを使用して、正確な書式指定子TimeSpan.ParseExact
の配列を指定できます。
var formats = new string[] {@"m\:s", @"\:s", ...};
var timeSpace = TimeSpan.ParseExact(input, formats, CultureInfo.CurrentCulture);
ParseExact
.Net 4で導入されたことに注意してください
パラメータ文字列は、以下に指定された特定の形式である必要があります。
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
したがって、「1:15」は hh:mm として扱われます。1 分 15 秒を渡す場合は、パラメーター文字列を に再フォーマットする必要があります"00:01:15"
。文字列を対応する日、時間、分、ss 変数に分割し、それらを使用して TimeSpan オブジェクトを割り当てることができます。
MSDN には適切なドキュメントがあります。