2012-05-02 88 views
17

是否有一種簡單的方法可以將代表小數小時的float值轉換爲TimeSpan對象,反之亦然?例如:將浮點數轉換爲時間跨度

float oneAndAHalfHours = 1.5f; 
float twoHours = 2f; 
float threeHoursAndFifteenMinutes = 3.25f; 
float oneDayAndTwoHoursAndFortyFiveMinutes = 26.75f; 

TimeSpan myTimeSpan = ConvertToTimeSpan(oneAndAHalfHours); // Should return a TimeSpan Object 

任何想法?

回答

33

你想要FromHours方法。

這需要一個2倍(而不是浮動),並返回一個TimeSpan

double hours = 1.5; 
TimeSpan interval = TimeSpan.FromHours(hours); 

要想從一個TimeSpan總學時使用`TotalHours'屬性:

TimeSpan interval = new TimeSpan(1, 15, 42, 45, 750); 
double hours = interval.TotalHours; 
12

所以,你正在尋找... TimeSpan.FromHours(double)

該文檔是您的朋友。

+8

這個命名方案只是瘋狂。如此不可發現。誰會想到,如果我想從*幾個小時*創建TimeSpan *,這就是'TimeSpan.FromHours'所能做到的嗎? –

+1

@JonSkeet:我知道,它令人難以置信。 Lippert在哪裏? –

+1

我會花很多錢去看Eric設計的日期/時間API。我的意思完全是字面意思......我認爲,將他的決定與我在「野田時間」拍攝的決定進行比較時,我獲得的價值對我來說是相當有價值的。 –