Получите метку времени для 27/02/2019 00:00 США / Восток в python, используя pytz и datetime - PullRequest
0 голосов
/ 27 февраля 2019

У меня есть следующая строка:

27/02/2019

Как известно в программе, что эти даты соответствуют часовому поясу Нью-Йорка, я хотел бы получить отметку времени, соответствующую:

27/02/2019 00:00 US/Eastern

Я пытался:

import datetime
import pytz

exchange_tz = pytz.timezone('US/Eastern')
_period1 = datetime.datetime(2019,2,27)
_period1_localized = exchange_tz.localize(_period1)
_period1_ts = int((_period1_localized - datetime.datetime(1970, 1, 1, tzinfo=exchange_tz)).total_seconds()) 

>>> _period1_ts
1551225600

Но это дает метку времени, соответствующую:

27/02/2019 00:00 UTC

Я проверил, что 1551225600 метка времени соответствует 27/02/2019 00:00 UTC, а не 27/02/2019 00:00 US/Eastern пользуясь этой услугой:

https://www.epochconverter.com/

Что я делаю не так?

1 Ответ

0 голосов
/ 27 февраля 2019

На всякий случай, если это поможет другим, я обнаружил, что ошибка находится здесь:

_period1_ts = int((_period1_localized - datetime.datetime(1970, 1, 1, tzinfo=exchange_tz)).total_seconds())

Он будет использовать часовой пояс UTC для времени EPOCH:

_period1_ts = int((_period1_localized - datetime.datetime(1970, 1, 1, tzinfo=pytz.utc)).total_seconds())

Делая это, выполучить 1551243600 как отметку времени, что соответствует Wednesday, 27 February 2019 05:00:00 UTC, что фактически 27/02/2019 00:00 US/Eastern time

Приведенный выше код с этим исправлением можно использовать для получения отметки времени из локализованной даты и времени.

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