2012-01-19 2 views
5

Я хочу удалить секунды от промежутка времени, используя C#удалить секунды из промежутка времени, используя C#

Мой код здесь:

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

Он возвращает значение 00:10:00

Но я хочу ниже выходные : 00:10 только не секунды поле :00.

+3

Вы имеете в виду для печати? Или вы действительно хотите «округлить» промежуток времени? – leppie

+0

да я хочу, чтобы преобразовать TimeSpan 00:10:00 значение 00:10 только –

+0

Так вы имеете в виду для печати? – leppie

ответ

12

Ну вы можете просто сделать, как

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

EDIT

, чтобы получить его правильно отформатированную Используйте

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

Вам нужно добавить форматирование, как ' "{0:00}: {} 1:00"' –

+0

@ScottRippey Спасибо за указание на это – V4Vendetta

+0

Это может быть упрощено до 'string.Format (" {0: HH \\ : mm} ", ts);' который будет отображать "02:05". –

7

Обратите внимание, что TimeSpanне имеет формат. Он хранится в некотором внутреннем представлении, которое совсем не похоже на 00:10:00.

Обычный формат hh:mm:ss создается только тогда, когда TimeSpan преобразуется в String, явно или неявно. Таким образом, преобразование является точкой, в которой вам нужно сделать что-то. Пример кода в вашем вопросе «слишком рано» - на данный момент, TimeSpan еще типа TimeSpan.

Чтобы изменить преобразование в строку, вы можете использовать либо String.Format, как это было предложено в ответ V4Vendetta, либо вы можете использовать custom format string для TimeSpan.ToString (доступен с .NET 4):

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

Это работает очень хорошо! –

6
TimeSpan newTimeSpan = new TimeSpan(timeSpan.Hours, timeSpan.Minutes, 0);