30

xxh:yym 形式の文字列がいくつかあります。ここで、xx は時間、yy は「05h:30m」のような分です。このタイプの文字列を TimeSpan に変換するエレガントな方法は何ですか?

4

5 に答える 5

27

少しハックですが、これはうまくいくようです:

TimeSpan span;


if (TimeSpan.TryParse("05h:30m".Replace("m","").Replace("h",""), out span))
            MessageBox.Show(span.ToString());
于 2008-08-25T20:20:22.953 に答える
7

DateTime.ParseExactまたはDateTime.TryParseExact、入力の正確な形式を指定できます。を取得したら、であるを取得DateTimeできます。DateTime.TimeOfDayTimeSpan

がない場合TimeSpan.TryParseExact、「エレガントな」ソリューションは問題ないと思います。

@buyutec ご想像のとおり、期間が 24 時間を超える場合、この方法は機能しません。

于 2008-08-25T20:23:51.090 に答える
2

別のスレッドから:

xs:duration を timespan に変換する方法

于 2009-06-04T20:36:28.650 に答える
2

ここに1つの可能性があります:

TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1));

コードをよりエレガントにしたい場合は、拡張メソッドを使用します。

public static TimeSpan ToTimeSpan(this string s)
{
  TimeSpan t = TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1));
  return t;
}

それからあなたはすることができます

"05h:30m".ToTimeSpan();
于 2008-08-25T20:24:25.177 に答える
1

TimeSpan.ParseTimeSpan.TryParseはオプションではありませんか? 「承認された」形式を使用していない場合は、手動で解析する必要があります。おそらく、2 つの整数値を正規表現でキャプチャしてから、それらを整数に解析しようとします。そこから、コンストラクターを使用して新しい TimeSpan を作成できます。

于 2008-08-25T20:22:29.253 に答える