Отображение временного интервала в формате часов: минут. Пример- (72:59)

#c# #asp.net

#c# #asp.net

Вопрос:

Я написал этот фрагмент кода, чтобы получить временной интервал между двумя датами и временем:

 private TimeSpan CalculateTimeDifference()
{
    string StartDate = txtOffBarDate.Text;
    string StartTime = txtOffbarTime.Text;

    DateTime StartDateTime = Convert.ToDateTime(StartDate   " "   StartTime);

    string EndDate = txtOnBarDate.Text;
    string EndTime = txtOnBarTime.Text;

    DateTime EndDateTime = Convert.ToDateTime(EndDate   " "   EndTime);

    TimeSpan TotalTime = StartDateTime.Subtract(EndDateTime);
    return TotalTime ;
}
 

Теперь я хочу сохранить результат моего временного интервала в переменной с форматом 00:00 (Часы: минуты).Пожалуйста, подскажите мне, как это сделать.

Ответ №1:

Вы можете использовать свойства TotalHours и Minutes :

 double hours = TotalTime.TotalHours;
int minutes  = TotalTime.Minutes;
string result = string.Format("{0}:{1}", (int) hours, minutes);
 

Однако я бы вообще не стал использовать строку для хранения этой информации. Используйте значение TimeSpan since, поскольку оно включает в себя всю информацию, и преобразуйте его в строку только тогда, когда вы хотите ее отобразить.

Ответ №2:

Используйте TotalHours и метод toString() с форматом:

Если ваш временной интервал меньше одного дня (24 часа), используйте этот простой:

 string result = TotalTime.ToString(@"hh:mm");
 

Если нет, используйте это:

 string result = string.Format("{0}:{1}", (int)TotalTime.TotalHours, TotalTime.Minutes);
 

Комментарии:

1. Это фактически вернет «00:59», поскольку 72 часа и 59 минут фактически равны 3 дням 0 часам и 59 минутам.