我想将给定时间四舍五入到最接近的 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 中的日期时间列,让我知道是否有更简单的方法。谢谢!
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)))