如何将带有时区的字符串转换为unix时间戳python?
我有一个从数据库中获取的日期时间字符串,我想将其转换为unix时间戳 我不知道该怎么做如何将带有时区的字符串转换为unix时间戳python?,python,python-3.x,datetime,unix-timestamp,Python,Python 3.x,Datetime,Unix Timestamp,我有一个从数据库中获取的日期时间字符串,我想将其转换为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) 我尝试的另一种方法如下 python_timestamp = datetime.isoformat(db_timestamp) test_timestamp = datetim
db_timestamp = '2020-08-05 12:48:50+02:00'
f = '%Y-%m-%d %H:%M:%S%z'
timestamp = datetime.strptime(db_timestamp , f)
我尝试的另一种方法如下
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或更高版本,您需要的是
来自ISOFORMAT
来解析字符串,以及timestamp()
来获得从UNIX时间(POSIX)算起的秒数
在您的示例中,
db\u timestamp
具有另一种格式的日期/时间字符串,如您在ValueError
中所示-它实际上是哪一个?这两种格式都是兼容的,因此ISOFORMAT的将起作用(请参见我的答案)。您应该会收到不同的错误(或以不同的顺序)。我得到了第一个代码示例的最后一个错误。您使用的是哪个Python 3.x版本?(什么是x?)这起作用了!Thanks@jmf:很高兴我能帮忙。还有一件事,请注意,如果您的输入字符串不包含UTC偏移量,Python将假定它是本地时间(您的操作系统设置)-生成的UNIX时间戳将考虑本地时间的UTC偏移量。
ValueError: time data '2020-08-05T12:48:50+02:00' does not match format '%Y-%m-%d %H:%M:%S%z'
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