在我的WPF
应用中,我有一些看似0:22:49
,0:08:00
,0:06:31
的字符串,格式为hour:minute:second
,我需要将这些字符串作为进一步计算的时间,如除法和平方根
更确切地说,我需要计算这一次的average
和standard deviation
答案 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