Как проверить состояние "между 23:00 и 6:30"?
Я хотел бы проверить с arrow
(*) текущее время между 23:00 и 6:30.
В настоящее время я использую наивные проверки в приведенном ниже коде, но мне было интересно, есть ли arrow
родная конструкция доступна
import arrow
def check(now):
if now.hour >= 23 or now.hour < 6 or (now.hour == 6 and now.minute <= 30):
print("we are between 23:00 and 6:30 the next day")
else:
print("we are outside the range")
#out
now = arrow.get('2013-05-05 12:30:45', 'YYYY-MM-DD HH:mm:ss')
check(now)
# in
now = arrow.get('2013-05-05 23:30:45', 'YYYY-MM-DD HH:mm:ss')
check(now)
# in
now = arrow.get('2013-05-06 01:30:45', 'YYYY-MM-DD HH:mm:ss')
check(now)
# in
now = arrow.get('2013-05-06 05:45:45', 'YYYY-MM-DD HH:mm:ss')
check(now)
# out
now = arrow.get('2013-05-06 07:30:45', 'YYYY-MM-DD HH:mm:ss')
check(now)
(*) Я с удовольствием пользуюсь arrow
в течение многих лет, но если решение будет более простым с другим пакетом (dolorean
или другой похожий, я забыл имя) это тоже хорошо
1 ответ
Вы можете пойти с дефолтом datetime
Библиотека Python, но имейте в виду, что вы должны придерживаться часового пояса, я бы порекомендовал использовать UTC, позвонив datetime.utcnow
или же datetime.now
если вам нужно местное время. Вот пример:
In [12]: from datetime import datetime
In [13]: now = datetime.utcnow()
In [14]: now.hour
Out[14]: 16
In [15]: 6 < now.hour < 23
Out[15]: True
PS. Если datetime
это не вариант по какой-то причине, вы можете пойти с arrow.utcnow()
или же локализовано arrow.now()
вариант.