如何将字符串“07:35”(HH:MM)转换为TimeSpan

时间:2014-06-23 14:55:36

标签: c# timespan

我想知道是否有办法将24小时制格式字符串转换为TimeSpan。

现在我有一个旧的时尚风格":

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

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

4 个答案:

答案 0 :(得分:82)

虽然这是正确的,但仍然有效:

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小时格式化时间。

答案 1 :(得分:3)

答案 2 :(得分:3)

尝试

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 :(得分:1)

您可以使用以下代码转换时间。

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

但是如果你想获得当天的当前时间,你可以使用以下代码:

TimeSpan _CurrentTime = DateTime.Now.TimeOfDay;

结果将是:

03:54:35.7763461

用一个物体来表示小时,分钟,秒,蜱等等。