Как рассчитать оставшееся время в формате чч: мм: сс, зная общее количество шагов, текущий шаг и продолжительность (миллисекунды)? - PullRequest
1 голос
/ 03 декабря 2010

Вопрос в качестве заголовка, это не работает, не могу понять, почему:

  // Get total steps, current step and duration in milliseconds
  int current = stats[0]; int total = stats[1]; int duration = stats[2];

  // Calculate the time span (of remaining time)
  var remaining = TimeSpan.FromMilliseconds((total - current) * duration);

  // Update the label
  label.Text = string.Format("Tempo rimanente: {0}",
    (new DateTime(remaining.Ticks)).ToString("hh:mm:ss"));

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

Попробуйте изменить

(new DateTime(remaining.Ticks)).ToString("hh:mm:ss"));

Для

remaining.Hours + ":" + remaining.Minutes + ":" + remaining.Seconds);

ИЛИ даже:

 // Update the label
 label.Text = string.Format("Tempo rimanente: {0:00}:{1:00}:{2:00}",
    remaining.Hours, remaining.Minutes, remaining.Seconds)
1 голос
/ 03 декабря 2010

Почему вы вообще пытаетесь конвертировать TimeSpan в DateTime?«Оставшееся время» - это концепция, которая идеально подходит для TimeSpan, а не DateTime.Возможно, вы захотите преобразовать его в «расчетное время завершения», которое будет равным DateTime, но в противном случае просто используйте TimeSpan.

Обратите внимание, что в .NET 4, TimeSpan получил возможности нестандартного формата , если они вам действительно нужны - но я подозреваю, что формат по умолчанию, вероятно, вам подойдет, по крайней мере, для начала.

...