首页 >后端开发 >C++ >在 C# 中如何将日期时间四舍五入到最接近的时间增量?

在 C# 中如何将日期时间四舍五入到最接近的时间增量?

Barbara Streisand
Barbara Streisand原创
2025-01-06 19:06:40360浏览

How Can I Round Up a DateTime to the Nearest Time Increment in C#?

将 DateTime 舍入到最近的时间增量

在许多编程场景中,有必要将 DateTime 值舍入到最接近的特定时间增量。例如,一个常见的要求是四舍五入到最接近的 15 分钟,以符合业务日程限制。

为了满足这一需求,可以使用一个名为 RoundUp 的简单而有效的函数。它需要两个参数:一个 DateTime 值和一个表示所需增量的 TimeSpan。

函数实现:

public static DateTime RoundUp(DateTime dt, TimeSpan d)
{
    return new DateTime((dt.Ticks + d.Ticks - 1) / d.Ticks * d.Ticks, dt.Kind);
}

用法:

以下代码片段演示了如何将 RoundUp 函数应用于各种 DateTime 值,增量为15 分钟:

// Round up to nearest 15-minute increment
var dt1 = RoundUp(DateTime.Parse("2011-08-11 16:59"), TimeSpan.FromMinutes(15));
// Output: {11/08/2011 17:00:00}

var dt2 = RoundUp(DateTime.Parse("2011-08-11 17:00"), TimeSpan.FromMinutes(15));
// Output: {11/08/2011 17:00:00}

var dt3 = RoundUp(DateTime.Parse("2011-08-11 17:01"), TimeSpan.FromMinutes(15));
// Output: {11/08/2011 17:15:00}

在此示例中:

  • 初始值为“16:59”的 dt1 将向上舍入为“17:00”。
  • 初始值为“17:00”的 dt2 保持不变,因为它已经落在 15 分钟上边界。
  • 初始值为“17:01”的 dt3 将向上舍入为“17:15”。

以上是在 C# 中如何将日期时间四舍五入到最接近的时间增量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn