Как отформатировать время так, чтобы все лишнее отсекалось?

Рейтинг: 0Ответов: 1Опубликовано: 19.02.2023

Есть такой код:

DateTime starttime = DateTime.UtcNow;
...
TimeSpan ts = DateTime.UtcNow - starttime;
...     
Label1.Text = ts.TotalSeconds.ToString("00:##");

Но при таком форматировании выводит следующее: Прошло: 00.30, а мне бы хотелось чтобы время само считало, нужно ему добавить часы или убрать минуты, вот так: Прошло: 1 час 20 минут 34 секунды. А когда час еще не наступил или минута, то вот так: Прошло: 50 минут 29 секунд или Прошло: 45 секунд. Можно ли это как-то реализовать?

Ответы

▲ 1Принят

Да можно

TimeSpan elapsed = DateTime.UtcNow - starttime;
string message = "Прошло: ";
if (elapsed.TotalHours >= 1)
{
    message += $"{(int)elapsed.TotalHours} час {(int)elapsed.Minutes} минут {(int)elapsed.Seconds} секунд";
}
else if (elapsed.TotalMinutes >= 1)
{
    message += $"{(int)elapsed.TotalMinutes} минут {(int)elapsed.Seconds} секунд";
}
else
{
    message += $"{(int)elapsed.TotalSeconds} секунд";
}
Label1.Text = message;