@kxooll

Почему не получается вычесть время?

Привет. Есть такой код -
private DateTime timeStart = DateTime.Now;
        private void WorkTime_Tick(object sender, EventArgs e)
        {
            WorkTimeLabel.Content = "Рабочее время: " + ((DateTime.Now - timeStart).ToString("hh:mm"));
        }

Он выдает ошибку -
System.FormatException: 'Входная строка имела неверный формат.'

Пробовал разные форматы, но постоянно возникает одна и та же ошибка. Как вывести время в формате часы:минуты?
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Еще DateTime.Subtract можно использовать:

WorkTimeLabel.Content = $"Рабочее время: {DateTime.Now.Subtract(timeStart).ToString(@"hh\:mm")}";

Разделители и прочие «непонятные» символы лучше экранировать (слешем, как показано в примере).

Если timeStart будет раньше на 24 часа, то в формате hh:mm эта информация не отразится. Можно использовать такой вариант:

WorkTimeLabel.Content = "Рабочее время: " + 
  (DateTime.Now - timeStart).ToString(@"d\д\ hh\:mm").TrimStart('0', 'д').Trim();

См. также: Stopwatch
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
EreminD
@EreminD
Кое-что умею
TimeSpan

DateTime start = DateTime.Now;
TimeSpan timeDiff = DateTime.Now - start;
timeDiff.Hours;
timeDiff.Minutes;

Посмотрите еще варианты ToString для таймспана
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы