为什么datetime.today.minute没有提供实际的分钟数?

时间:2019-07-01 04:57:59

标签: python python-3.x

我正在学习Python。最近,我遇到了,在使用“ datetime.today()。minute”时,我通过添加30来获得o / p。当我评论-30部分时,时间输出是最近一分钟的+30,如果我保留-30部分,那么它将给出正确的结果。为什么会这样?

代码:

from datetime import datetime
odds = [1, 3, 5, 7, 9, 11 ,13, 15, 17, 19, 21, 23, 25, 27, 29 ,31, 33, 35, 37, 39 ,41, 43, 45, 47 ,49 ,51 ,53 ,55 ,57, 59]
odd_min = datetime.today().minute #- 30
print(odd_min)
#print("\n")
if odd_min in odds:
  print("Odd min")
else:
  print("Not odd min")

O / P:

48

Not odd min

预期O / P:

18

Not odd min

当我减去30时,它给出正确的结果。但是我想知道为什么它没有给出正确的输出。

4 个答案:

答案 0 :(得分:0)

code

您的代码正确,对我有用。

答案 1 :(得分:0)

您的代码没有错。在w while循环中尝试它,以便您可以实时查看。您的评论了 #- 30完全无效,因为它是注释。

from datetime import datetime as dt
while True: 
    now = dt.today().minute 
    print(now) 
    if now %2 == 0: 
        print(f'{now} is even')
    else:
        print(f'{now} is odd')

我应该解释一下,%2 == 0只是获取偶数或奇数值的捷径。我由于某种原因很难编辑它。对此感到抱歉

答案 2 :(得分:0)

您的个人资料说您来自印度,并且印度时区的UTC偏移为+ 5h30,因此日期时间似乎不返回您的本地时区。

您可以这样设置偏移量:

from datetime import datetime
from datetime import timedelta

datetime_now = datetime.utcnow() + timedelta(hours=5, minutes=30)
odd_min = datetime_now.minute

否则,您可以只使用自己的解决方案并从时间中减去(或加)30。时间将不是您的正确本地时间,但是由于您的用例只关心分钟,所以没关系。

答案 3 :(得分:0)

这是因为时区。您可能正在时区为IST的系统上运行代码,该时区的时间增量为+5:30。

使用 odd_min = datetime.utcnow().minute代替odd_min = datetime.today().minute