如何将带时区的字符串转换为 unix 时间戳 python?

How to convert a string with timezone to unix timestamp python?

我有一个从数据库中获取的日期时间字符串,我想将其转换为 unix 时间戳。

我不知道该怎么做。

db_timestamp = '2020-08-05 12:48:50+02:00'
f = '%Y-%m-%d %H:%M:%S%z'
timestamp = datetime.strptime(db_timestamp , f)
TypeError: strptime() argument 1 must be str, not datetime.datetime 

我尝试的另一种方法如下

python_timestamp = datetime.isoformat(db_timestamp)
test_timestamp = datetime.strptime(python_timestamp , f)

然后我得到以下错误

ValueError: time data '2020-08-05T12:48:50+02:00' does not match format '%Y-%m-%d %H:%M:%S%z'

如何解决这个错误? db_timestamp 的正确字符串格式应该是什么?

假设你 运行 Python 3.7 或更高版本,你想要的是 fromisoformat 解析字符串和 timestamp() 获取自纪元 UNIX 时间以来的秒数(POSIX).

from datetime import datetime
db_timestamp = '2020-08-05 12:48:50+02:00'
# to datetime object:
dt = datetime.fromisoformat(db_timestamp)
# to UNIX time:
ts = dt.timestamp()
print(repr(dt), ts)
>>> datetime.datetime(2020, 8, 5, 12, 48, 50, tzinfo=datetime.timezone(datetime.timedelta(seconds=7200))) 1596624530.0