2012-05-02 121 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。我的意思完全是字面意思......我认为,将他的决定与我在“野田时间”拍摄的决定进行比较时,我获得的价值对我来说是相当有价值的。 –