在Python3的Pytz模块中将EST、CST和DST时区转换为unix时间戳
我的日期格式如下:在Python3的Pytz模块中将EST、CST和DST时区转换为unix时间戳,python,datetime,epoch,pytz,Python,Datetime,Epoch,Pytz,我的日期格式如下: 2019-12-13 20:18东部标准时间或2019-12-13 20:18东部标准时间或2019-12-13 20:18中央标准时间 我想将它们转换为unix时间戳 我正在使用Pytz模块 到目前为止,我已尝试通过以下方式使用datetime模块: time_est = '2019-12-13 20:18 EST' datetime.datetime.strptime(time_est, '%Y-%m-%d %H:%M %z') 这似乎也不起作用。如果您有任何建议或
2019-12-13 20:18东部标准时间
或2019-12-13 20:18东部标准时间
或2019-12-13 20:18中央标准时间
我想将它们转换为unix时间戳
我正在使用Pytz
模块
到目前为止,我已尝试通过以下方式使用datetime
模块:
time_est = '2019-12-13 20:18 EST'
datetime.datetime.strptime(time_est, '%Y-%m-%d %H:%M %z')
这似乎也不起作用。如果您有任何建议或提示,我们将不胜感激。时区名称缩写在许多情况下是不明确的(一个缩写表示不同的时区),因此最好明确定义您的缩写的含义。可以通过向dateutil的解析器提供映射dict来实现
import dateutil
tzmapping = {'EST': dateutil.tz.gettz('America/New_York'),
'EDT': dateutil.tz.gettz('America/New_York'),
'CST': dateutil.tz.gettz('America/Chicago'),
'CDT': dateutil.tz.gettz('America/Chicago')
# add more if needed...}
time_eastern = '2019-12-13 20:18 EST'
dtobj = dateutil.parser.parse(time_eastern, tzinfos=tzmapping)
# datetime.datetime(2019, 12, 13, 20, 18, tzinfo=tzfile('US/Eastern'))
time_unix = dtobj.timestamp()
# 1576286280.0
如果必须使用pytz,则必须忽略字符串中的EST
,解析为naive datetime,本地化到适当的时区,然后获取时间戳:
import datetime
import pytz
eastern = pytz.timezone('America/New_York')
dtobj = eastern.localize(datetime.datetime.strptime(time_eastern, '%Y-%m-%d %H:%M EST'))
time_unix = dtobj.timestamp()
# 1576286280.0
旁注:
%z
用于解析UTC偏移量,例如,“+00:00”
将解析为UTC。还有%Z
,它将解析非常具体的缩写,请参阅。但是,这是a)平台相关的,b)它实际上不会设置结果datetime对象的tzinfo属性。