Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将带有时区的字符串转换为unix时间戳python?_Python_Python 3.x_Datetime_Unix Timestamp - Fatal编程技术网

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

如何将带有时区的字符串转换为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

我有一个从数据库中获取的日期时间字符串,我想将其转换为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 = 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