2012-05-02 10 views
17

¿Hay una manera simple de tomar un valor float que representa horas fraccionarias y convertirlos en un objeto TimeSpan y viceversa? Por ejemplo:Convirtiendo un flotador en un intervalo de tiempo

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

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

¿Alguna idea?

Respuesta

33

Quiere el método FromHours.

Esto toma un doble (en lugar de un flotador) y devuelve un TimeSpan:

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

Para obtener el total de horas de un TimeSpan utilizan el `TotalHours' propiedad:

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

Entonces, usted está buscando ... TimeSpan.FromHours(double)?

La documentación es tu amigo.

+8

Ese esquema de nombres es una locura . Tan indescifrable. ¿Quién hubiera pensado que si quería crear un 'TimeSpan' * a partir de * un número de * horas *, eso es lo que haría' TimeSpan.FromHours'? –

+1

@JonSkeet: Lo sé, desconcierta la mente. ¿Dónde está Lippert? –

+1

Pagaría un buen dinero por ver una API de fecha y hora diseñada por Eric. En realidad, me refiero a eso literalmente ... Creo que el valor que obtendría al comparar sus decisiones con las que tomé en Noda Time valdría un poco para mí. –

Cuestiones relacionadas