在 Python 3 中的 Pytz 模块中将 EST、CST 和 DST 时区转换为 unix 时间戳
Convert EST, CST and DST timezones to unix timestamp in Pytz Module in Python 3
我的日期格式如下:
2019-12-13 20:18 EST
或 2019-12-13 20:18 DST
或 2019-12-13 20:18 CST
我想将它们转换为unix timestamp
。
我正在使用 Pytz
模块。
到目前为止,我已经尝试通过以下方式使用 datetime
模块:
time_est = '2019-12-13 20:18 EST'
datetime.datetime.strptime(time_est, '%Y-%m-%d %H:%M %z')
这似乎也不起作用。如有任何建议或提示,我们将不胜感激。
时区名称缩写在很多情况下是不明确的(一个缩写代表不同的时区,see e.g. here),因此最好明确定义缩写的含义。您可以通过向 dateutil 的解析器提供映射字典来做到这一点。
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
,解析为简单的日期时间,本地化到适当的时区,然后取时间戳:
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
我的日期格式如下:
2019-12-13 20:18 EST
或 2019-12-13 20:18 DST
或 2019-12-13 20:18 CST
我想将它们转换为unix timestamp
。
我正在使用 Pytz
模块。
到目前为止,我已经尝试通过以下方式使用 datetime
模块:
time_est = '2019-12-13 20:18 EST'
datetime.datetime.strptime(time_est, '%Y-%m-%d %H:%M %z')
这似乎也不起作用。如有任何建议或提示,我们将不胜感激。
时区名称缩写在很多情况下是不明确的(一个缩写代表不同的时区,see e.g. here),因此最好明确定义缩写的含义。您可以通过向 dateutil 的解析器提供映射字典来做到这一点。
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
,解析为简单的日期时间,本地化到适当的时区,然后取时间戳:
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