Python 重新格式化datetime字符串(秒为8个小数点)

Python 重新格式化datetime字符串(秒为8个小数点),python,datetime,Python,Datetime,我希望转换以下字符串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 co

我希望转换以下字符串
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”与格式“%Y-%m-%d%H:%m:%S.%f%z”不匹配


任何关于thia的建议都将不胜感激

第二个小数位太多(
%f
是微秒,所以是6)

解决此问题的一个简单方法是使用
(\d{6})\d
\1
执行
子操作,尽管可能有更干净的方法解决此问题


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

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

解决此问题的一个简单方法是使用
(\d{6})\d
\1
执行
子操作,尽管可能有更干净的方法解决此问题

这也将截断而不是舍入,但除非您需要所有数字,否则可能不需要如此精确。在这种情况下,舍入也不起作用。

dateutil
's可以很好地推断格式并接受超过6位的小数秒:

import dateutil

originalString = "2018-10-21 12:51:00.7134616 +00:00"

dateutil.parser.parse(originalString)
Out[3]: datetime.datetime(2018, 10, 21, 12, 51, 0, 713461, tzinfo=tzutc())
dateutil
“s”在推断格式和接受超过6位小数秒方面做得很好:

import dateutil

originalString = "2018-10-21 12:51:00.7134616 +00:00"

dateutil.parser.parse(originalString)
Out[3]: datetime.datetime(2018, 10, 21, 12, 51, 0, 713461, tzinfo=tzutc())

谢谢你的评论!我很高兴截断,因为我只需要精确到分钟级别谢谢你的评论!我对截断很满意,因为我只需要精确到分钟级别