相关疑难解决方法(0)

舍入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万
查看次数

有没有更好的方法将DateTime修剪为特定的精度?

将DateTime对象修剪为特定精度的最佳方法是什么?例如,如果我的DateTime值为'2008-09-29 09:41:43',但我只想要精确到分钟,有没有更好的方法来做到这一点?

private static DateTime TrimDateToMinute(DateTime date)
{
    return new DateTime(
        date.Year, 
        date.Month, 
        date.Day, 
        date.Hour, 
        date.Minute, 
        0);
}
Run Code Online (Sandbox Code Playgroud)

我真正想要的是让它变量,以便我可以将其精度设置为秒,分钟,小时或日.

.net c# datetime

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

将日期时间剪切/舍入为整数即小时/天?

有没有任何一种数学方法可以将DateTime减少到精确的小时,​​一天左右?类似于小数点的圆形到int.

Period.Day
如果原始值是2011-01-01 13:00:00,它最终会进入2011-01-01 00:00:00

如果是Period.Hour
如果原始值是2011-03-11 13:32:00,它最终会进入2011-03-11 13:00:00

我想下面的事情.这当然可以正常工作,但是range后来无论如何都会重复使用-array.如果我可以直接在该迭代上计算,而不是自己的迭代,那就更好了.但someType不能放入该迭代(它取决于someType).

if (someType == Period.Day)
  range.ForEach(d => d.time = new DateTime(d.time.Year, d.time.Month, d.time.Day,0,0,0));
if (someType == Period.Hour)
  range.ForEach(d => d.time = new DateTime(d.time.Year, d.time.Month, d.time.Day, d.time.Hour, 0, 0));
Run Code Online (Sandbox Code Playgroud)

c#

14
推荐指数
2
解决办法
2万
查看次数

向下舍入到dateTime中的最近边界

在类似问题答案中,DateTime四舍五入到闭合(时间)边界,该方法不允许通过选择舍入到下边界. 有没有办法以相同的方式计算一段时间的下边界? 意思是如果时间是10/2/2012 10:52:30并且选择的时间是一小时:10/2/2012 10:00:00,如果选择的日期是10/2/2012 00: 00:00等.Math.Round

c# algorithm datetime

4
推荐指数
1
解决办法
3108
查看次数

标签 统计

c# ×4

algorithm ×2

datetime ×2

.net ×1