有没有办法轻松围绕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#函数我可以使用圆形时间盘?
答案 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);
}