最接近的 20 分钟间隔时间?

问题描述 投票:0回答:1

我想将给定时间四舍五入到最接近的 20 分钟间隔。

例如,如果给出以下时间:

给定 圆形
12:05 下午 12:00 下午
中午12点10分 中午12点20分
12:21 下午 中午12点20分
12:33 下午 12:40 下午
12:43 下午 12:40 下午
12:50 下午 下午1:00

注意:12:10 pm -> 12:20 pm,如果处于 20 分钟间隔的中间,则向上取整。

我尝试使用类似线程中的代码,如下所示:(在Python中四舍五入到最近的30分钟

from datetime import datetime, timedelta

def ceil_dt(dt, delta):
    return dt + (datetime.min - dt) % delta

now = datetime(2023, 2, 24, 12, 21, 00)
print(now)    
print(ceil_dt(now, timedelta(minutes=20)))
#ts.round(freq='T') # minute

如您所见,给定时间是 12:21:00,但输出是 12:40:00。相反,我希望 12:21:00 四舍五入为 12:20:00。最终,目标是将其应用于 pandas 中的日期时间列,让我知道是否有更简单的方法。谢谢!

python pandas rounding python-datetime
1个回答
0
投票
from datetime import datetime, timedelta

def round_dt(dt, delta):
    increase = (datetime.min - dt) % delta
    if increase < delta / 2:
        return dt + increase
    else:
        return dt + increase - delta

now = datetime(2023, 2, 24, 12, 21, 00)
print(now)    
print(round_dt(now, timedelta(minutes=20)))
© www.soinside.com 2019 - 2024. All rights reserved.