我在循环中添加间隔大小(假设一分钟)的时间跨度,每当它到达23:59时,此时我正在尝试添加一分钟,它给我结果1.00:00:00: 00这样的事情。如何在23:59:00喜欢
时如何连续添加间隔00:00:00
00:01:00
00:02:00
感谢。
答案 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);
}
}