2014-02-24 49 views
1

我之前問過一個這樣的問題,得到了很好的答案,但我犯了一個錯誤,希望輸出是小數而不是時間。所以這是個問題。兩次跟進之間的差異(轉換爲十進制)

我有兩個文本框,允許用戶以這種格式(h:mm)輸入開始時間和結束時間。我希望它能夠在標籤中返回差異。例如,如果用戶在第一個文本框中輸入1:35,在第二個文本框中輸入3:30,然後按下'計算'按鈕,它將返回小數點1.92。

此任何想法或資源?我只想計算輸入時間的小數差,日期和秒根本無關緊要。以下是以(h:mm)格式獲取輸出的代碼。

TimeSpan ts1 = TimeSpan.Parse(textBox1.Text); //"1:35" 
TimeSpan ts2 = TimeSpan.Parse(textBox2.Text); //"3:30" 

label.Text = (ts2 - ts1).ToString();   //"1:55:00" 

回答

3
(ts2 - ts1).TotalHours.ToString(); 
4

這聽起來像你想的總時數,在1.92g的時間爲115分鐘(ISH)。

在這種情況下,你想:

double hours = (ts2 - ts1).TotalHours; 

...然後你可以格式化你多麼希望(例如爲2位小數)。

例如:

TimeSpan ts1 = TimeSpan.Parse("1:35"); 
TimeSpan ts2 = TimeSpan.Parse("3:30"); 
double hours = (ts2 - ts1).TotalHours; 

Console.WriteLine(hours.ToString("f2")); // Prints 1.92 

當然我個人使用Noda Time並解析字符串作爲LocalTime值,而不是TimeSpan值中,因爲這就是他們的意思是(一天的時間),但這是一個小問題;)

+0

再次擊敗Skeet。有一天我會贏得一個。 –