Как проверить состояние «между 23:00 и 6:30»? - PullRequest
0 голосов
/ 02 сентября 2018

Я хотел бы проверить с помощью 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 Ответ

0 голосов
/ 02 сентября 2018

Вы можете использовать библиотеку Python по умолчанию datetime, но имейте в виду, что вам нужно придерживаться часового пояса, я бы порекомендовал использовать 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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...