Я изучаю Питон. Недавно я столкнулся с тем, что при использовании «datetime.today (). если я оставлю часть -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")
О/П:
48
Not odd min
Ожидаемый О/П:
18
Not odd min
Когда я вычитаю 30, это дает правильный результат. Но я хочу знать, почему он не дает правильного вывода.
48 не является нечетным числом. Как это неправильный ответ? Также ваш код работает отлично, но почему вы проверяете странность со списком нечетных значений?
В каком часовом поясе вы находитесь? В каком часовом поясе находится компьютер?






В вашем коде нет ничего плохого. Попробуйте это в цикле 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 — это просто ярлык для получения четных или нечетных значений. Мне почему-то трудно это редактировать. извините за это
В вашем профиле указано, что вы из Индии, а часовой пояс в Индии имеет смещение UTC +5:30, поэтому похоже, что datetime не возвращает ваш местный часовой пояс.
Вы можете установить смещение самостоятельно так:
from datetime import datetime
from datetime import timedelta
datetime_now = datetime.utcnow() + timedelta(hours=5, minutes=30)
odd_min = datetime_now.minute
В противном случае вы можете просто использовать свое собственное решение и вычесть (или добавить) 30 из времени. Время не будет вашим правильным местным временем, но, поскольку ваш вариант использования заботится только о минутах, это не имеет значения.
Это из-за часового пояса. Возможно, вы запускаете свой код в системе, которая находится в часовом поясе IST, например, с временной разницей +5:30.
Использовать
odd_min = datetime.utcnow().minute вместо odd_min = datetime.today().minute
Я не понимаю, что не так с кодом, который вы показываете. Вы упоминаете что-то о 30-минутном смещении, но похоже, что это не повлияет на определение того, является ли минута нечетной. Можете ли вы уточнить, в чем заключается ваша настоящая проблема, возможно, изменив код, чтобы продемонстрировать проблему?