Почему datetime.today.minute не дает фактических минут?

Я изучаю Питон. Недавно я столкнулся с тем, что при использовании «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, это дает правильный результат. Но я хочу знать, почему он не дает правильного вывода.

Я не понимаю, что не так с кодом, который вы показываете. Вы упоминаете что-то о 30-минутном смещении, но похоже, что это не повлияет на определение того, является ли минута нечетной. Можете ли вы уточнить, в чем заключается ваша настоящая проблема, возможно, изменив код, чтобы продемонстрировать проблему?

Blckknght 01.07.2019 07:03

48 не является нечетным числом. Как это неправильный ответ? Также ваш код работает отлично, но почему вы проверяете странность со списком нечетных значений?

Sıddık Açıl 01.07.2019 07:10

В каком часовом поясе вы находитесь? В каком часовом поясе находится компьютер?

user2357112 supports Monica 01.07.2019 07:14
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
3
198
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

code

Ваш код правильный, он работает для меня.

В вашем коде нет ничего плохого. Попробуйте это в цикле 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

Другие вопросы по теме