Как отображать часы и минуты из промежутка времени более 24 часов

Мой временной интервал, например:

Timespan span = new Timespan(40,24,34);

И у меня есть эта линия

FormClock.Text = TimeToInstall.ToString(@"hh\:mm\:ss");

Я хочу отобразить это в тексте следующим образом:

40:24:34

Как это сделать?


person Robert Mazurowski    schedule 02.10.2016    source источник
comment
Возможный дубликат: stackoverflow.com/questions/3505230 /   -  person Abion47    schedule 03.10.2016


Ответы (1)


Глядя на MSDN, вы можете не делайте это со стандартным форматом .ToString(). Свойство TotalHours промежутка времени, кажется, то, что вам нужно, чтобы получить от дней до часов.

Из MSDN:

Интервал TimeSpan = новый TimeSpan (1, 15, 42, 45, 750); Console.WriteLine("Значение TimeSpan: {0}", интервал);

  Console.WriteLine("{0:N5} hours, as follows:", interval.TotalHours);
  Console.WriteLine("   Hours:        {0,3}", 
                    interval.Days * 24 + interval.Hours);
  Console.WriteLine("   Minutes:      {0,3}", interval.Minutes);
  Console.WriteLine("   Seconds:      {0,3}", interval.Seconds);
  Console.WriteLine("   Milliseconds: {0,3}", interval.Milliseconds);

Итак, в вашем случае:

FormClock.Text = string.Format("{0}:{1}:{2}". TimeToInstall.Days * 24 + TimeToInstall.Hours, TimeToInstall.Minutes, TimeToInstall.Seconds); 

Если это то, что вы собираетесь использовать часто, вы можете посмотреть на то, чтобы превратить его в какой-то метод расширения.

person NikolaiDante    schedule 02.10.2016
comment
Я не мог в это поверить, так что спасибо за ссылку ;-) В моем случае (мм:сс) мне пришлось добавить еще один термин для целых минут... Немного разочаровывает класс TimeSpan :-) - person Xan-Kun Clark-Davis; 21.01.2018
comment
это самое умное решение, которое у меня есть на данный момент - person Sanjay; 18.12.2019