【发布时间】:2019-07-21 11:55:05
【问题描述】:
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
因此,由于夏令时,纽约时间基本上是美国东部时间或美国东部时间,具体取决于我们目前处于一年中的哪个时期。
在 pytz 中使用 US/Eastern 时,它是指 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 documentation 中读到normalize() 函数应在进行算术覆盖时使用,但我不确定这是否适用于这种情况。
【问题讨论】:
标签: python python-2.7 datetime timezone pytz