相关疑难解决方法(0)

如何将时间向上舍入到最接近的X分钟?

有舍入一个简单的函数UPDateTime到最近的15分钟?

例如

2011-08-11 16:592011-08-11 17:00

2011-08-11 17:00 留下来 2011-08-11 17:00

2011-08-11 17:012011-08-11 17:15

c# datetime rounding

144
推荐指数
7
解决办法
7万
查看次数

舍入DateTime对象

我想将日期/时间舍入到图表应用程序的最近区间.我想要一个像下面这样的扩展方法签名,以便可以在任何精度级别上实现舍入:

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)

c# algorithm

100
推荐指数
3
解决办法
3万
查看次数

Roundoff Timespan到15分钟的间隔

我的代码中有一个属性,用户可以在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分钟

c#

10
推荐指数
1
解决办法
5784
查看次数

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)

任何投入都赞赏.

.net c#

2
推荐指数
1
解决办法
2073
查看次数

标签 统计

c# ×4

.net ×1

algorithm ×1

datetime ×1

rounding ×1