Как правильно сравнить две переменные даты и времени? - PullRequest
0 голосов
/ 11 сентября 2018

Я хочу сравнить две переменные даты и времени, чтобы определить текущее время в выходные или нет.

Мой код здесь:

def is_weekend_off(weekend_table, trading_timezone):
    now_trading_timezone = datetime.now(tz=trading_timezone)
    is_weekend = False
    for it in weekend_table:
        condition1 = it[0] <= now_trading_timezone
        condition2 = now_trading_timezone < it[1]
        condition3 = condition1 and condition2
        print('now = ' + str(now_trading_timezone))
        print('it[0] = ' + str(it[0]))
        print('it[1] = ' + str(it[1]))
        print('condition1 = ' + str(condition1))
        print('condition2 = ' + str(condition2))
        time.sleep(60)
        if condition3:
            tmp = True
        else:
            tmp = False
        is_weekend = is_weekend or tmp
    return is_weekend

и результат здесь:

now = 2018-09-10 21:50:59.001475-05:00
it[0] = 2018-09-10 21:00:00-05:51
it[1] = 2018-09-10 22:00:00-05:51
condition1 = False
condition2 = True

Как я знаю, условие1 должно быть Истиной, а не Ложью. Как мне исправить этот результат?

1 Ответ

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

Ваш it[0] имеет часовой пояс -05:51, поэтому, когда now_trading_timezone, чей часовой пояс -05:00, сравнивается с it[0], now_trading_timezone становится эффективным 2018-09-10 21:50:59.001475 минус 51 минут, что равно 20:59:59.001475-05:51, что меньше it[0] 2018-09-10 21:00:00-05:51, в результате False для условия it[0] <= now_trading_timezone.

Чтобы исправить часовой пояс it[0] с помощью now_trading_timezone, вы можете использовать метод datetime.replace:

it[0] = it[0].replace(tzinfo=now_trading_timezone.tzinfo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...