Как конфертировать из UTC в часовой пояс tzutc ()? - PullRequest
1 голос
/ 16 июня 2019

У меня есть наивная временная метка, которую мне нужно преобразовать в tzutc() timedate, чтобы рассчитать дельту времени.

Я преобразовал строку в дату, используя

pd.Timestamp(x)

Затем преобразовал его в UTC, используя

pytz.utc.localize(x)

и получил:

Timestamp('2019-01-09 00:00:00+0000', tz='UTC')

Проблема в том, что мне нужно сравнить ее с датой

Timestamp('2018-06-07 18:13:53+0000', tz='tzutc()')

При сравнении их получаю

TypeError: Timestamp subtraction must have the same timezones or no timezones

1 Ответ

0 голосов
/ 16 июня 2019

Вы можете преобразовать отметку времени в дату и обратно, используя методы, показанные ЗДЕСЬ .

Вот метод для преобразования даты и времени из местного времени в UTC с использованием pytz:

def LocalToUTC(dt):
    # Converts the local time to UTC

    localtz = get_localzone()

    if dt.tzinfo is None:
        localdt = localtz.localize(dt)
    else:
        localdt = dt.replace(tzinfo=localtz)

    utcdt = localdt.astimezone(pytz.UTC)
    return utcdt

Аналогичным образом, вот метод для преобразования любого часового пояса в UTC:

def TimezoneToUTC(dt, timezonestring):
    # Converts from a given timezone to UTC using the timezonestring
    # Example timezone string: 'Europe/Paris' OR 'America/New_York'

    fromtz = pytz.timezone(timezonestring)

    if dt.tzinfo is None:
        localdt = fromtz.localize(dt)
    else:
        localdt = dt.replace(tzinfo=fromtz)

    utcdt = localdt.astimezone(pytz.UTC)
    return utcdt

Для получения списка всех строк часовых поясов используйте:

>>> import pytz
>>> 
>>> for tz in pytz.all_timezones:
...     print tz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...