繁体   English   中英

如何在最后10分钟之前获得20分钟

[英]how to get 20 mins before the last 10th minute

所以我需要在最后10分钟前计算20分钟。 EG如果现在是13:07,我需要的时间是12:40

所以根据我的研究,我认为我需要找到小时的最后10分钟(或第0分钟),然后再减去20分钟。

我找到了寻找下一个第10分钟的答案

所以我调整了代码以找到最后的第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'

我做错了什么?

您的代码有2个问题。 首先, 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)

导入问题是datetime.timedelta 当你导入像from datetime import datetime, timedelta ,所以datetime在下面的代码实际上是datetime.datetime类。

这里有两种解决方案:要么你改变datetime.timedeltatimedelta ,或者你改变你导入的方式import datetime ,然后更改datetime在代码datetime.datetime 我推荐第一个,因为它更简单。

datetime包和datetime类具有相同名称的事实使事情变得有点复杂。 你需要小心,确切地知道哪个是哪个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM