2012-05-02 4 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.

Это происходит двойной (а не с плавающей точкой) и возвращает 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: Я знаю, это ошеломило ум. Где Липперт ?! –

+1

Я бы заплатил хорошие деньги, чтобы увидеть API-интерфейс даты/времени, разработанный Эриком. Я на самом деле подразумеваю это буквально ... Я думаю, что ценность, которую я бы сравнил с его решениями с теми, которые я сделал в Noda Time, стоила бы немного для меня. –

Смежные вопросы