如何从给定城市中的给定日期和时间获取以秒为单位的Unix纪元时间戳?

问题描述

我正在尝试获取以下纽约日期和时间的相应的Epoch Unix时间戳(以秒为单位):

2020-09-25 09:30 New York Time.

根据https://www.epochconverter.com/timezones?q=1601040600&tz=America%2FNew_York,这对应于:

Conversion results (1601040600)
1601040600 converts to Friday September 25,2020 09:30:00 (am) in time zone America/New York (EDT)

这是我尝试过的:

import datetime
import pytz
​
et = pytz.timezone('America/New_York')
​
mydt = datetime.datetime(2020,9,25,30,et)

​myepoch = int(mydt.timestamp())
​
print('2020-09-25 09:30 ET Epoch: ',myepoch)
​    ​
>>> OUTPUT
2020-09-25 09:30 ET Epoch:  1601043960
​

因此它给出1601043960而不是1601040600。为什么以及应该怎么做才能获得正确的价值?

请注意,该解决方案适用于任何日期,因此它必须自动处理EST / EDT夏令时。

解决方法

似乎解决方案是这样的:

import datetime
import pytz
​
et = pytz.timezone('America/New_York')
​
mydt = et.localize(datetime.datetime(2020,9,25,30,0))

​myepoch = int(mydt.timestamp())
​
print('2020-09-25 09:30 ET Epoch: ',myepoch)
​    ​
>>> OUTPUT
2020-09-25 09:30 ET Epoch:  1601040600