Я хочу отформатировать TimeSpans в C # следующим образом:
ххх дней (с) гггг часов (с) zzz минут (с)
Условия:
Дополнительные секунды должны быть усечены
дней - это самая большая единица, которую я хочу. Я хочу, чтобы 34 дня отображались как 34 дня, а не как 1 месяц 4 дня и т. Д.
Если временной интервал меньше одного дня, я не хочу, чтобы часть дня отображалась. Аналогично, если span меньше 1 часа, я хочу, чтобы отображалась только минутная часть.
Есть ли способ сделать это, используя строки встроенного формата, или нет другого способа, кроме как написать свою собственную функцию?
Редактировать: в настоящее время использую свою собственную функцию для этого. Время ввода в минутах занимает (TimeSpan.TotalMinutes)
:
private static string GetTimeStringFromMinutes(double p)
{
var minutes = (int) p;
int hours = minutes / 60;
minutes = minutes % 60;
int days = hours/24;
hours = hours%24;
string dayPart = days + " day(s) ";
string hoursPart = hours + " hour(s) ";
string minutesPart = minutes + " minute(s)";
if (days != 0)
return (dayPart + hoursPart + minutesPart);
if (hours != 0)
return (hoursPart + minutesPart);
return (minutesPart);
}