python - 用 8 个小数点重新格式化日期时间字符串
问题描述
我正在寻找转换以下字符串originalString = "2018-10-21 12:51:00.7134616 +00:00"
以提取年、月、日、小时和分钟的日期时间信息以提供dtObj = datetime.datetime(2018, 10, 21, 12, 51)
试图
首先从时区元素中删除冒号
correctedString = re.sub(r'([-+]\d{2}):(\d{2})(?:(\d{2}))?$', r'\1\2\3', originalString)
然后寻找转换为datetime
cor = datetime.strptime(correctedString, '%Y-%m-%d %H:%M:%S.%f %z')
但是,我收到错误“ ValueError: time data '2018-10-21 12:51:00.7134616 +0000' does not match format '%Y-%m-%d %H:%M:%S.%f %z'
”
任何关于 thia 的建议将不胜感激!
解决方案
秒的小数位数太多(%f
是微秒,所以 6)。
解决此问题的一种简单方法是使用sub
with (\d{6})\d
to \1
,尽管可能有更简洁的方法来解决它。
这也将截断而不是四舍五入,但您可能不需要它那么精确,除非您需要所有数字并且在这种情况下四舍五入也不起作用。
推荐阅读
- typescript - 无法使用应用实例方法在 NestJS 中启用 CORS
- android - 如何在不插入低分辨率文件的情况下显示 ImageView 像素化?
- pyspark - 如何在 PySpark 2.x 中使用修剪?
- c++ - 不使用configure_file时如何使用CMake生成C++代码?
- openssl - 使用 openssl ciphers 命令删除密码套件,无需重新编译?
- sapui5 - SAPUI5 - 事件总线
- google-apps - Google 操作 - 个性
- javascript - 我在 JavaScript 中的复制地址不起作用
- reactjs - React 中的 Angular 服务
- python - R和Python中的线性回归-同一问题的不同结果