TimeSpan将分钟添加到零小时

时间:2012-11-01 14:09:06

标签: c# timespan

我在循环中添加间隔大小(假设一分钟)的时间跨度,每当它到达23:59时,此时我正在尝试添加一分钟,它给我结果1.00:00:00: 00这样的事情。如何在23:59:00喜欢

时如何连续添加间隔
00:00:00
00:01:00
00:02:00

感谢。

5 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

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

如果您想获得总分钟数,例如使用TimeSpan.TotalMinutes proprety

答案 2 :(得分:0)

你希望它在到达23:59后回到00:00吗?

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

看起来太简单了,你说得对吗?

答案 3 :(得分:0)

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

的内容
String.format({0}:{1}:{2}, span.Days*24 + span.Hours, span.Minutes, span.Seconds)

答案 4 :(得分: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);
     }
}