С веб-сайт времени и даты :
Generalized Time Zone in New York
ET Eastern Time UTC -5:00 / -4:00 Wed, 11:42:33
Time Zone Currently Being Used in New York
UTC -5 EST Eastern Standard Time New York Wed, 11:42:33
Time Zone Not Currently Being Observed in New York
UTC -4 EDT Eastern Daylight Time 10 Mar 2019
Таким образом, в основном нью-йоркское время - EST или EDT, в зависимости от того, какой период года мы находимся в настоящее время из-за экономии времени DayLight.
При использовании US / Eastern в pytz это относится к ET, EST или EDT ?.Учитывает ли это изменение времени EST / EDT?
Я использую этот код для получения меток времени начала и конца дня заданной даты по восточному времени:
import datetime
import pytz
session = datetime.datetime.strptime('26/02/2019', '%d/%m/%Y')
exchange_tz = pytz.timezone('US/Eastern')
session_localized = exchange_tz.localize(session)
_period1 = int((session_localized - datetime.datetime(1970, 1, 1, tzinfo=exchange_tz)).total_seconds())
_period2 = int((session_localized - datetime.datetime(1970, 1, 1, tzinfo=exchange_tz)).total_seconds()) + 24*60*60
>>> _period1
1551139200
>>> _period2
1551225600
Я не уверен на 100%, что эти временные метки были сгенерированы правильно.Потому что, когда я пытаюсь преобразовать их обратно в локализованные даты, я получаю 1 час разницы:
_exchange_tz = pytz.timezone('US/Eastern')
_exchange_ts = _exchange_tz.localize( datetime.datetime.fromtimestamp(1551139200) )
>>> str(_exchange_ts)
'2019-02-26 01:00:00-05:00'
Что, насколько я понимаю, должно быть 2019-02-26 00:00:00
.Что я делаю не так?
Я также прочитал в документации pytz , что функция normalize()
должна использоваться при выполнении арифметического покрытия, но я не уверен, применимо ли это к этому случаю илинет.