2014-10-08 24 views
0

在我WPF applicatin琛字符串我有一些字符串看起來像0:22:490:08:000:06:31,..格式爲hour:minute:second,我需要總結這些字符串隨着時間的進一步計算,像師和平方根表示時間


要更多一些,我需要計算average這組時間

+0

請您澄清一下,如果數據是「小時:分鐘:秒」,通過在其上執行除法和平方根意味着什麼? – 2014-10-08 08:16:30

+0

我需要計算那些時間的平均值和標準偏差@VikasGupta – Yona 2014-10-08 08:24:42

+1

好的。在這種情況下,我不認爲Timespan直接支持分割和平方根。您必須選擇合適的單位,如秒,或分鐘('TimeSpan.TotalSeconds'),對這些值執行這些操作,然後根據需要將它們轉換回'TimeSpan'('TimeSpan.FromSeconds')。 – 2014-10-08 08:35:06

回答

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); 
1

將它們轉換爲TimeSpanstandard deviation然後把它們加起來

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

總將等於0時37分二十〇秒

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。這意味着如果您的CurrentCultureTimeSeparator property不是:(大多數文化有:但不是全部),則此解析操作將失敗。

在這種情況下,您可以改爲使用TimeSpan.Parse(String, IFormatProvider) overload

謝謝!我可以在TimeSpan上使用分割和平方根嗎?

當然可以,但不是直接。你可以使用Total* propertiesTimeSpan結構,它們都將數字作爲double返回。您可以將它們相互分開,也可以使用Math.Sqrt method

+0

謝謝!我可以在TimeSpan上使用分割和平方根嗎? – Yona 2014-10-08 08:12:30

+0

@Yona當然可以。更新了我的答案。 – 2014-10-08 10:51:50