向上舍入c#TimeSpan到5分钟

可能重复:
如何应对Rounding-TimeSpan?

有没有办法轻松地围绕ac#TimeSpan(可能包含超过一天)这样做

0天23h 59m变为1天0 h 0 m?

0天23h 47m变为0天23 h 50 m?

等等?

这是我到目前为止所提出的:

int remainder = span2.Minutes % 5; if (remainder != 0) { span2 = span2.Add(TimeSpan.FromMinutes(5 - remainder)); } 

它似乎很多代码用于相当简单的事情:(是不是有某种内置的c#函数我可以使用圆形时间盘?

这里是:

 var ts = new TimeSpan(23, 47, 00); ts = TimeSpan.FromMinutes(5 * Math.Ceiling(ts.TotalMinutes / 5)); 

或者加一粒糖:

 public static class TimeSpanExtensions { public static TimeSpan RoundTo(this TimeSpan timeSpan, int n) { return TimeSpan.FromMinutes(n * Math.Ceiling(timeSpan.TotalMinutes / n)); } } ts = ts.RoundTo(5); 
  static TimeSpan RoundTimeSpan(TimeSpan value) { return TimeSpan.FromMinutes(System.Math.Ceiling(value.TotalMinutes / 5) * 5); }