有舍入一个简单的函数UP一DateTime到最近的15分钟?
例如
2011-08-11 16:59 变 2011-08-11 17:00
2011-08-11 17:00 留下来 2011-08-11 17:00
2011-08-11 17:01 变 2011-08-11 17:15
我想将日期/时间舍入到图表应用程序的最近区间.我想要一个像下面这样的扩展方法签名,以便可以在任何精度级别上实现舍入:
static DateTime Round(this DateTime date, TimeSpan span);
Run Code Online (Sandbox Code Playgroud)
我的想法是,如果我通过十分钟的时间跨度,它将四舍五入到最接近的十分钟间隔.我不能理解我的实施,并希望你们中的一个人之前会写过或使用类似的东西.
我认为楼层,天花板或最近的实施都可以.
有任何想法吗?
编辑:感谢@tvanfosson和@ShuggyCoUk,实现如下:
public static class DateExtensions {
public static DateTime Round(this DateTime date, TimeSpan span) {
long ticks = (date.Ticks + (span.Ticks / 2) + 1)/ span.Ticks;
return new DateTime(ticks * span.Ticks);
}
public static DateTime Floor(this DateTime date, TimeSpan span) {
long ticks = (date.Ticks / span.Ticks);
return new DateTime(ticks * span.Ticks);
}
public static DateTime Ceil(this DateTime date, TimeSpan span) {
long ticks = (date.Ticks + span.Ticks - …Run Code Online (Sandbox Code Playgroud) 我的代码中有一个属性,用户可以在HH:mm中输入一个时间跨度
10:32
10:44
15:45
Run Code Online (Sandbox Code Playgroud)
我想在我的房产到最近的15分钟,但我没有在这里的日期时间.我只需要使用Timespan
10:32 to 10:30
10:44 to 10:45
15:45 to 15:45
01:02 to 01:00
02:11 to 02:15
03:22 to 03:15
23:52 to 00:00
Run Code Online (Sandbox Code Playgroud)
尝试了所有这些解决方案,但它们涉及Datetime
如何将时间向上舍入到最接近的X分钟?
是否有一个简单的函数可以将日期时间向下舍入到最接近的30分钟,在C#中?
DotNet Roundoff日期时间持续15分钟
是否有功能将日期时间整理到最后一个季度?
例...
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
Run Code Online (Sandbox Code Playgroud)
我写了下面的函数,但它返回下一季 ...
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));
Run Code Online (Sandbox Code Playgroud)
任何投入都赞赏.