2012-05-02 12 views
17

Gibt es eine einfache Möglichkeit, einen float Wert zu nehmen, der die Anzahl der Stunden repräsentiert und sie in ein TimeSpan Objekt umwandelt und umgekehrt? Zum Beispiel:Konvertieren eines Floats in einen Zeitbereich

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

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

Irgendwelche Ideen?

Antwort

33

Sie möchten die FromHours Methode.

Dies geschieht über ein Doppel (eher als ein float) und gibt ein TimeSpan:

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

Um die Gesamtzahl der Stunden von einem TimeSpan zu erhalten nutzen die `TotalHours' Eigenschaft:

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

Sie suchen also ... TimeSpan.FromHours(double)?

Die Dokumentation ist dein Freund.

+8

Das Namensschema ist einfach verrückt . So unauffindbar. Wer hätte gedacht, dass, wenn ich einen 'TimeSpan' * aus * einer Anzahl von * Stunden * erstellen wollte, das" TimeSpan.FromHours "das wäre? –

+1

@JonSkeet: Ich weiß, es verwirrt den Verstand. Wo ist Lippert ?! –

+1

Ich würde gutes Geld bezahlen, um eine von Eric entworfene Datum/Zeit-API zu sehen. Ich meine das eigentlich ganz wörtlich ... Ich denke, der Wert, den ich gewinnen würde, wenn ich seine Entscheidungen mit denen vergleiche, die ich in Noda Time getroffen habe, wäre mir ziemlich viel wert. –

Verwandte Themen