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

Mic*_*lle 7 .net c#

可能重复:
如何处理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));
}
Run Code Online (Sandbox Code Playgroud)

对于一些相当简单的东西来说似乎有很多代码:(是不是有一些内置的c#函数我可以使用圆形时间盘?

Ant*_*lev 19

这里是:

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

或者加一粒糖:

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);
Run Code Online (Sandbox Code Playgroud)