将c#时间跨度缩短至5分钟

将c#时间跨度缩短至5分钟,c#,.net,C#,.net,可能重复: 有没有一种方法可以轻松地将c#TimeSpan(可能包含一天以上)四舍五入,以便 0天23h59m变为1天0h0m 0天23h 47m变为0天23h 50m 等等 以下是我到目前为止的想法: int remainder = span2.Minutes % 5; if (remainder != 0) { span2 = span2.Add(TimeSpan.FromMinutes(5 - remainder)); } 似乎有很多代码都很简单:(难道没有某种内置的c函数可以

可能重复:

有没有一种方法可以轻松地将c#TimeSpan(可能包含一天以上)四舍五入,以便

0天23h59m变为1天0h0m

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

等等

以下是我到目前为止的想法:

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