所以我需要在最后10分钟前计算20分钟。
如果现在是13:07,我需要的时间是12:40
所以根据我的研究,我想我需要找到一小时的最后10分钟,然后减去20分钟。
I found an answer to finding the next 10th minute
所以我调整了代码以找到最后10分钟,然后简单地说“-datetime.timedelta(minutes=20)”

import math
from datetime import datetime, timedelta

def ceil_dt(dt, delta):
    return datetime.min + math.ceil((dt - datetime.min) / delta) * delta

print(ceil_dt(datetime(2012, 10, 25, 17, 2, 16), timedelta(minutes=-10))) - datetime.timedelta(minutes=20)

但它给了我以下的例外
2012-10-25 17:00:00
Traceback (most recent call last):
  File "F:/Pythong/test", line 7, in <module>
    print(ceil_dt(datetime(2012, 10, 25, 17, 2, 16), timedelta(minutes=-10))) - datetime.timedelta(minutes=20)
AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'

我做错什么了?

最佳答案

你的代码有两个问题。首先,您要import timedelta然后调用datetime.timedelta,这时您应该直接调用timedelta。其次,print的右括号放错了位置。所以这是可行的:

ceil_dt(datetime(2012, 10, 25, 17, 2, 16), timedelta(minutes=-10)) - timedelta(minutes=20)

但你可以使用:
dt = datetime(2012, 10, 25, 17, 2, 16)
res = dt - timedelta(minutes=dt.minute+20)

关于python - 如何在最后10分钟之前获得20分钟,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52866487/

10-12 16:42