2012-01-19 12 views
5

Chcę usunąć sekund z przedziału czasu za pomocą C#usunąć sekund z przedziału czasu za pomocą C#

Mój kod jest tutaj:

TimeSpan lateaftertime = new TimeSpan(); 
lateaftertime = lateafter - Convert.ToDateTime(intime) ; 

Zwraca wartość 00:10:00

Ale chcę wyjście poniżej : 00:10 tylko nie pole sekund :00.

+3

To znaczy, do druku? Czy naprawdę chcesz "zaokrąglić" czas trwania? – leppie

+0

Tak, chcę przekonwertować przedział czasowy 00:10:00 wartość do 00:10 tylko –

+0

Więc masz na myśli do druku? – leppie

Odpowiedz

12

Cóż można po prostu zrobić jak

string.Format("{0}:{1}", ts.Hours,ts.Minutes) // it would display 2:5 

EDIT

aby ją odpowiednio sformatowana Użyj

string.Format("{0:00}:{1:00}", ts.Hours,ts.Minutes) // it should display 02:05 
+0

Musisz dodać formatowanie, np. "{0:00}: {1:00}" ' –

+0

@ScottRippey Dziękuję za wskazanie go – V4Vendetta

+0

To może być uproszczone do' string.Format ("{0: HH \\ : mm} ", ts);", który wyświetli "02:05". –

7

pamiętać, że TimeSpannie ma format. Jest przechowywany w wewnętrznej reprezentacji, która w ogóle nie przypomina 00:10:00.

Zwykły format hh:mm:ss jest tworzony tylko wtedy, gdy TimeSpan jest konwertowany na String, jawnie lub niejawnie. Tak więc konwersja jest punktem, w którym trzeba coś zrobić. Przykład kodu w pytaniu jest "zbyt wcześnie" - w tym momencie TimeSpan nadal jest typu TimeSpan.

Aby zmodyfikować konwersję na ciąg, można użyć String.Format, jak zasugerowano w odpowiedzi V4Vendetta, albo można użyć custom format string dla TimeSpan.ToString (dostępny z .NET 4):

string formattedTimespan = ts.ToString("hh\\:mm"); 
+0

Działa to bardzo dobrze! –

6
TimeSpan newTimeSpan = new TimeSpan(timeSpan.Hours, timeSpan.Minutes, 0); 
Powiązane problemy