Сниппет: Изменение часового пояса для объекта DateTime


Информация

Преобразуйте объект Python DateTime из одного часового пояса в другой часовой пояс. Этот фрагмент принимает либо наивный, либо знающий объект DateTime.

Сниппет

# code/timezone.py

import datetime as dt
import pytz


def to_timezone(datetime_value, tz):
    """
    Convert the given datetime object to a datetime object with the given timezone.
    Accepts both aware and naive datetime objects

    Parameters
    ----------
    datetime_value: datetime.datetime
    tz: pytz.timezone

    Returns
    -------
    datetime.datetime
    """
    if not isinstance(datetime_value, dt.datetime):
        raise SyntaxError

    if not hasattr(tz, "zone") or tz.zone not in pytz.all_timezones:
        raise SyntaxError

    if (
        datetime_value.tzinfo is not None
        and datetime_value.tzinfo.utcoffset(datetime_value) is not None
    ):
        datetime_value = datetime_value.astimezone(tz)
    else:
        datetime_value = tz.localize(datetime_value)

    return datetime_value

Вход в полноэкранный режим Выйти из полноэкранного режима

Нашли опечатку?

Если вы нашли опечатку, предложение, которое можно улучшить, или что-то еще, что следует обновить в этой записи блога, вы можете получить доступ к ней через git-репозиторий и сделать запрос на исправление. Вместо того чтобы оставлять комментарий, пожалуйста, зайдите на GitHub и откройте запрос на исправление с вашими изменениями.


Фото Ijaz Rafi — https://unsplash.com/photos/L4hg5o67jdw

Оцените статью
Procodings.ru
Добавить комментарий