将C#TimeSpan向上舍入到5分钟

时间:2011-04-18 14:58:23

标签: c# .net

  

可能重复:
  How to deal with Rounding-off TimeSpan?

有没有办法轻松围绕c#TimeSpan(可能包含超过一天),以便

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

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

等?

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

int remainder = span2.Minutes % 5;
if (remainder != 0)
{
    span2 = span2.Add(TimeSpan.FromMinutes(5 - remainder));
}
似乎很多代码都很简单:(是不是有一些内置的c#函数我可以使用圆形时间盘?

2 个答案:

答案 0 :(得分:19)

这是:

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);

答案 1 :(得分:3)

 static TimeSpan RoundTimeSpan(TimeSpan value)
 {
     return TimeSpan.FromMinutes(System.Math.Ceiling(value.TotalMinutes / 5) * 5);
 }