如何计算剩余时间hh:mm:ss知道总步数,当前步长和持续时间(毫秒)?

时间:2010-12-03 19:43:29

标签: c# datetime loops iteration timespan

作为标题的问题,这是行不通的,不明白为什么:

  // 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 个答案:

答案 0 :(得分:1)

您为什么要尝试将TimeSpan转换为DateTime? “剩余时间”是一个非常适合TimeSpan而不是DateTime的概念。您可能希望将其转换为 DateTime的“估计完成时间”,否则只需使用TimeSpan

请注意,在.NET 4中,TimeSpan获得了custom format abilities,如果你真的需要它们 - 但我怀疑默认格式可能对你没用,至少从开始。

答案 1 :(得分:1)

尝试更改

(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)