我正在学习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时,它给出正确的结果。但是我想知道为什么它没有给出正确的输出。
答案 0 :(得分:0)
答案 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