@Q4U

Разные часовые пояса в питоне, как сделать чтоб менялось не только время но и дата (день недели)?

Делаю код, который должен работать с часовым поясом.

Аргумент функции - разница во времени (в часах). Функция возвращает словарь с днём недели, часами (сколько сейчас часов учитывая разницу) и минутами.
Код выглядит как-то так:

import datetime
from datetime import datetime

def get_datetime(difference):
    bot_datetime = {
    "weekday" : datetime.now().isoweekday(),
    "hour" : datetime.now().hour + difference,
    "minute" : datetime.now().minute
    }

    if bot_datetime["hour"] >= 24:
        bot_datetime["hour"] -= 24
        bot_datetime["weekday"] += 1
        if bot_datetime["weekday"] > 7:
            bot_datetime["weekday"] = 1

    elif bot_datetime["hour"] < 0:
        bot_datetime["hour"] = 0
        bot_datetime["weekday"] -= 1
        if bot_datetime["weekday"] == 0:
            bot_datetime["weekday"] = 1

    return bot_datetime

print(get_datetime(-2))


Находил библиотеки и модули, которые считают разницу во времени, но они не меняют дату, то есть день заканчивается, а дата та же.

Хочу узнать: Код кривой? И есть ли адекватный модуль или библиотека которая делает то же самое?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Может можно и проще сделать, но если надо пояс числом, то монжо так

from datetime import datetime, timedelta, timezone
import time


# Сначала находим смещение локального времени по UTC в часах
delta = -time.timezone//3600

# Потом прибавляем к нашему локальному поясу разницу и передаем это в таймзону
offset = timedelta(hours=delta+difference)
tz = timezone(offset)

# получаем время с учетом таймзоны
now = datetime.now(tz=tz)


Соответственно, все даты, время и дни недели будут сами пересчитаны, поэтому можно удалить все блоки if
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы