xxh:yym 形式の文字列がいくつかあります。ここで、xx は時間、yy は「05h:30m」のような分です。このタイプの文字列を TimeSpan に変換するエレガントな方法は何ですか?
buyutec
質問する
58849 次
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.TimeOfDay
TimeSpan
がない場合TimeSpan.TryParseExact
、「エレガントな」ソリューションは問題ないと思います。
@buyutec ご想像のとおり、期間が 24 時間を超える場合、この方法は機能しません。
于 2008-08-25T20:23:51.090 に答える
2
別のスレッドから:
于 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.ParseとTimeSpan.TryParseはオプションではありませんか? 「承認された」形式を使用していない場合は、手動で解析する必要があります。おそらく、2 つの整数値を正規表現でキャプチャしてから、それらを整数に解析しようとします。そこから、コンストラクターを使用して新しい TimeSpan を作成できます。
于 2008-08-25T20:22:29.253 に答える