使用pytz和datetime获取python 27/02/2019 00:00美国/东部的时间戳

时间:2019-02-27 18:46:30

标签: python python-2.7 datetime timestamp pytz

我有以下字符串:

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 :(得分:1)

以防万一,可以发现错误位于此处:

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

它将ETCCH时间使用UTC时区:

_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

上述经过更正的代码可用于从本地化的日期时间获取时间戳。