python - 如何将带时区的字符串转换为unix时间戳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
推荐阅读
- typescript - 无法搜索只读数组联合
- bazel - 如何在 Bazel 输出中获取所有任务结果
- amazon-s3 - 防止爬虫更改表属性
- kotlin - 如何使用反射查看一个类是否有一个 init 块?
- python - 增加项目计数网络抓取
- spring - 如何获取 @ConditionalOnExpression 注释中可用的自定义配置值
- php - Laravel 和旧版软件之间共享基于 Redis 的会话
- jquery - jQuery通过元素的id为数据属性添加值
- tensorflow - Keras fit_generator:模型是否也使用验证数据进行学习?
- ios - 为什么 SwiftUI 没有从解码的 JSON 中设置状态变量?