我在循环中添加时间跨度和间隔大小(假设一分钟),每当它到达 23:59 时,我正在尝试添加一分钟,它给我的结果是 1.00:00:00:00 类似这个。当它像 23:59:00 一样时,我怎样才能获得连续的添加间隔
00:00:00
00:01:00
00:02:00
谢谢。
任何一个
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();
每当您的 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);
}
}
我假设您仅使用标准 toString() 方法打印出 TimeSpan 的值?这将产生“人类格式化”时间表示的 TimeSpan,例如 25 小时将是 1 天 1 小时。
如果要获取总分钟数,例如使用TimeSpan.TotalMinutes属性
您希望它在到达 23:59 后循环回到 00:00?
在您的循环中,或者您尝试实现此目的的任何地方,检查 Days 组件是否大于 0,如果是,则减去一天。
似乎太简单的回答是正确的......你真正在寻找什么?
在您TimeSpan
到达超过一天后,您将获得该形式的输出。如果您仍想以小时形式显示它,请尝试类似
String.format({0}:{1}:{2}, span.Days*24 + span.Hours, span.Minutes, span.Seconds)