You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现DateTime按指定时长或自动规则向下取整时间?

C# 时间向下取整方法扩展

保留原有带参方法

该方法可将指定时间向下取整到指定时间间隔的整数倍,实现代码如下:

DateTime RoundDown(DateTime date, TimeSpan interval)
{
    return new DateTime(date.Ticks / interval.Ticks * interval.Ticks);
}

带参方法调用示例

支持按任意时长向下取整,例如按5分钟间隔取整:

// 将当前时间按5分钟间隔向下取整,如22:51会返回22:50
DateTime currentTime = RoundDown(DateTime.Now, TimeSpan.FromMinutes(5));

注意:原示例中使用负时间间隔(TimeSpan.FromMinutes(-5))会导致取整方向与预期相反,建议使用正间隔参数。

新增无参重载方法

新增无参方法后,调用时会自动获取当前系统时间,并按1分钟间隔向下取整(符合示例中22:51取整到22:50的需求),实现代码如下:

// 无参重载:自动使用当前时间,按1分钟间隔向下取整
DateTime RoundDown()
{
    return RoundDown(DateTime.Now, TimeSpan.FromMinutes(1));
}

无参方法调用示例

// 获取当前时间并按1分钟向下取整,如22:51返回22:50
DateTime roundedTime = RoundDown();

可选扩展(自定义自动取整规则)

若需要根据当前时间动态调整取整间隔(而非固定1分钟),可修改无参方法的逻辑,示例如下:

// 示例:根据当前分钟数动态选择取整间隔
DateTime RoundDown()
{
    DateTime now = DateTime.Now;
    TimeSpan interval;

    // 自定义规则:分钟数小于15则按5分钟取整,否则按15分钟取整
    interval = now.Minute < 15 ? TimeSpan.FromMinutes(5) : TimeSpan.FromMinutes(15);
    
    return RoundDown(now, interval);
}

内容的提问来源于stack exchange,提问作者Daniel Lip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:05:55