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())
谢谢你的评论!我很高兴截断,因为我只需要精确到分钟级别谢谢你的评论!我对截断很满意,因为我只需要精确到分钟级别