是否有将日期时间整理到上一季度的功能?
示例...
08:03:00 becomes 08:00:00
08:14:00 becomes 08:00:00
08:15:00 stays 08:15:00
08:16:00 becomes 08:15:00
08:29:00 becomes 08:15:00
08:45:00 stays 08:45:00
08:55:00 becomes 08:45:00
09:01:00 becomes 09:00:00
我写了下面的函数,但它返回下一季度 ...
private DateTime RoundUpToPreviousQuarter(DateTime date, TimeSpan d)
{
return new DateTime(((date.Ticks + d.Ticks - 1) / d.Ticks) * d.Ticks);
}
// call the method
this.RoundUp(time, TimeSpan.FromMinutes(15));
任何投入都表示赞赏。
答案 0 :(得分:7)
将模数15应用于datetime Minute属性,并从同一属性中减去该值
DateTime dt = new DateTime(2013,5,28, 15, 59,0);
dt = dt.AddMinutes(-(dt.Minute % 15));
在这个例子中,我创建了一个零秒的日期时间。如果您还需要删除秒数
DateTime dt = new DateTime(2013,5,28, 15, 59,45);
dt = dt.AddMinutes(-(dt.Minute % 15)).AddSeconds(-dt.Second);
答案 1 :(得分:3)
将您的方法更改为:
private DateTime RoundUpToPreviousQuarter(DateTime date, TimeSpan d)
{
return new DateTime(((date.Ticks) / d.Ticks) * d.Ticks);
}
检查这对我有用。