首页 > 解决方案 > 用 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 的建议将不胜感激!

标签: pythondatetime

解决方案


秒的小数位数太多(%f是微秒,所以 6)。

解决此问题的一种简单方法是使用subwith (\d{6})\dto \1,尽管可能有更简洁的方法来解决它。

这也将截断而不是四舍五入,但您可能不需要它那么精确,除非您需要所有数字并且在这种情况下四舍五入也不起作用。


推荐阅读