質問
「05h:30m」のように、xxh:yym 形式の文字列がいくつかあります。xx は時間、yy は分です。このタイプの文字列を TimeSpan に変換するエレガントな方法は何ですか?
解決
これはうまくいくようですが、少しハック的です。
TimeSpan span;
if (TimeSpan.TryParse("05h:30m".Replace("m","").Replace("h",""), out span))
MessageBox.Show(span.ToString());
他のヒント
DateTime.ParseExact
または DateTime.TryParseExact
入力の正確な形式を指定できます。を取得した後、 DateTime
, を掴むことができます。 DateTime.TimeOfDay
これは TimeSpan
.
ない場合 TimeSpan.TryParseExact
, 、「エレガントな」ソリューションは選択肢にないと思います。
@buyutec ご想像のとおり、期間が 24 時間を超える場合、この方法は機能しません。
可能性の 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();
別のスレッドから:
は TimeSpan.Parse そして TimeSpan.TryParse オプションじゃないの?「承認された」形式を使用していない場合は、手動で解析を行う必要があります。おそらく、正規表現で 2 つの整数値を取得し、それらを整数に解析してみると思います。そこから、コンストラクターを使用して新しい TimeSpan を作成できます。
所属していません StackOverflow