web-dev-qa-db-ja.com

文字列 "07:35"(HH:MM)をTimeSpanに変換する方法

24時間形式の文字列をTimeSpanに変換する方法があるかどうかを知りたいです。

今、私は「古いファッションスタイル」を持っています:

string stringTime = "07:35";
string[] values = stringTime.Split(':');

TimeSpan ts = new TimeSpan(values[0], values[1], 0);
29
VAAA

これが機能することは正しいですが、

TimeSpan time = TimeSpan.Parse("07:35");

検証に使用している場合...

TimeSpan time;
if (!TimeSpan.TryParse("07:35", out time))
{
    // handle validation error
}

TimeSpanは、時刻ではなく経過時間で動作することを主な目的としていることを考慮してください。 24時間を超える値を受け入れ、負の値も受け入れます。

入力文字列が有効な時刻(> = 00:00および<24:00)であることを検証する必要がある場合は、代わりにこれを検討する必要があります。

DateTime dt;
if (!DateTime.TryParseExact("07:35", "HH:mm", CultureInfo.InvariantCulture, 
                                              DateTimeStyles.None, out dt))
{
    // handle validation error
}
TimeSpan time = dt.TimeOfDay;

追加の利点として、これは、"h:mm tt"などの適切なフォーマット文字列を提供する限り、AMまたはPM)が含まれる12時間形式の時間も解析します。

89

つかいます TimeSpan.Parseは文字列を変換します

http://msdn.Microsoft.com/en-us/library/system.timespan.parse(v = vs.110).aspx

3
Adrian

試して

var ts = TimeSpan.Parse(stringTime);

新しい.NETでは、次のものもあります。

TimeSpan ts;

if(!TimeSpan.TryParse(stringTime, out ts)){
     // throw exception or whatnot
}
// ts now has a valid format

これは.NETで文字列を解析するための一般的なイディオムで、最初のバージョンはFormatExceptionをスローしてエラーのある文字列を処理し、後者はブール型TryParseに直接情報を提供します。

3
faester

次のコードを使用して時間を変換できます。

TimeSpan _time = TimeSpan.Parse("07:35");

ただし、現在の時刻を取得する場合は、次のコードを使用できます。

TimeSpan _CurrentTime = DateTime.Now.TimeOfDay;

結果は次のようになります。

03:54:35.7763461

オブジェクトでは、時間、分、秒、ティックなどを保持できます。

1
Muhammad Awais