-1

我在循环中添加时间跨度和间隔大小(假设一分钟),每当它到达 23:59 时,我正在尝试添加一分钟,它给我的结果是 1.00:00:00:00 类似这个。当它像 23:59:00 一样时,我怎样才能获得连续的添加间隔

00:00:00
00:01:00
00:02:00

谢谢。

4

5 回答 5

4

任何一个

  • 显示时间跨度时,请忽略天数部分:
string toDisplay = yourTimeSpan.ToString("hh:mm:ss");
  • 增加时间跨度后,如果是一天或更长时间,则减去一天:
if (yourTimeSpan.Days == 1)
  yourTimeSpan = yourTimeSpan.Subtract(TimeSpan.FromDays(1));

// or Wonko the Sane's improved version
if (yourTimeSpan.Days > 0) yourTimeSpan = new TimeSpan();
于 2012-11-01T14:17:35.620 回答
0

每当您的 TimeSpan 超过一天时,它就会在 ToString() 中格式化自己,将这一天添加到返回的字符串中。您可以在累积一天后格式化 ToString() 或减去它。如果您希望 TimeSpan 不超过一天,请检查以下代码:

TimeSpan ts = new TimeSpan();
DateTime dt = new DateTime();
TimeSpan day = dt.AddDays(1) - dt;
TimeSpan minute = dt.AddMinutes(1) - dt;

for (int i = 0; i < 20000; i++)
{
     ts = ts.Add(minute);
     if (ts.TotalDays > 1)
     {
         ts = ts.Subtract(day);
     }
}
于 2012-11-01T14:22:36.573 回答
0

我假设您仅使用标准 toString() 方法打印出 TimeSpan 的值?这将产生“人类格式化”时间表示的 TimeSpan,例如 25 小时将是 1 天 1 小时。

如果要获取总分钟数,例如使用TimeSpan.TotalMinutes属性

于 2012-11-01T14:16:07.430 回答
0

您希望它在到达 23:59 后循环回到 00:00?

在您的循环中,或者您尝试实现此目的的任何地方,检查 Days 组件是否大于 0,如果是,则减去一天。

似乎太简单的回答是正确的......你真正在寻找什么?

于 2012-11-01T14:16:27.067 回答
0

在您TimeSpan到达超过一天后,您将获得该形式的输出。如果您仍想以小时形式显示它,请尝试类似

String.format({0}:{1}:{2}, span.Days*24 + span.Hours, span.Minutes, span.Seconds)
于 2012-11-01T14:17:06.353 回答