表示时间的Sum字符串

时间:2014-10-08 08:01:30

标签: c# time

在我的WPF应用中,我有一些看似0:22:490:08:000:06:31的字符串,格式为hour:minute:second,我需要将这些字符串作为进一步计算的时间,如除法和平方根


更确切地说,我需要计算这一次的averagestandard deviation

3 个答案:

答案 0 :(得分:5)

,我认为您只需要使用TimeSpan.Parse方法;

var t1 = TimeSpan.Parse("0:22:49");
var t2 = TimeSpan.Parse("0:08:00");
var t3 = TimeSpan.Parse("0:06:31");
var total = t1 + t2 + t3;
Console.WriteLine(total);

结果将是;

00:37:20

请记住,TimeSpan.Parse(string)方法默认使用CurrentCulture。这意味着如果您的CurrentCulture TimeSeparator property不是:(大多数文化都有:但不是全部,则此解析操作将失败。

在这种情况下,您可以使用TimeSpan.Parse(String, IFormatProvider) overload代替。

  

谢谢!我可以在TimeSpan上使用除法和平方根吗?

当然可以,但不能直接。您可以使用TimeSpan double结构,这些结构都将数字作为{{1}}返回。您可以将它们相互分开,也可以使用Total* properties

答案 1 :(得分:2)

您可以使用TimeSpan类并转换为Ticks,Milliseconds,Seconds或Minutes,具体取决于计算中所需的精度。完成计算后,您可以转换回Timespans。

  

更确切地说,我需要计算这一组时间的平均值和标准差

以下是总和,平均值和标准差所需的计算示例:

var values = new []
{
    TimeSpan.Parse("0:22:49").TotalSeconds,
    TimeSpan.Parse("0:08:00").TotalSeconds,
    TimeSpan.Parse("0:06:31").TotalSeconds
};

var sum = values.Sum();
var avg = values.Average();
var stdev = Math.Sqrt(values.Average(v => Math.Pow(v - avg, 2)));


var total = TimeSpan.FromSeconds(sum);
var average = TimeSpan.FromSeconds(avg); ;
var standardev = TimeSpan.FromSeconds(stdev); ;

Console.WriteLine("Sum: " + total);
Console.WriteLine("Avg: " + average);
Console.WriteLine("StDev: " + standardev);

答案 2 :(得分:1)

将它们转换为TimeSpan然后添加它们

vat total = TimeSpan.Parse("0:22:49") + TimeSpan.Parse("0:08:00") + TimeSpan.Parse("0:06:31")

总数将等于00:37:20