这里是:2017-08-05T05:21:10.6582942Z
我想把它转换成%Y-%m-%d %H:%M:%S
我可以使用一些特别的方法,比如:
date = "2017-08-05T05:21:10.6582942Z"
new_date = date[:11] + " " + date[12:][:-9]
但是有什么办法我可以做一些更干净的datetime
或一些库为这个特定的目的?
使用datetime
库和strptime
方法(用于解析)和strftime
方法(用于格式化),这可以在没有分割和有限切片的情况下完成,如:
from datetime import datetime as dt
date = '2017-08-05T05:21:10.6582942Z'
output = dt.strptime(date[:-2], '%Y-%m-%dT%H:%M:%S.%f').strftime('%Y-%m-%d %H:%M:%S')
输出:'2017-08-05 05:21:10'
注意:切片需要从字符串日期中删除最后两个字符,因为%f
(小数秒)格式化程序只接受六个十进制值,而您的字符串包含七个十进制值。
根据格式文档:
%f
:微秒作为十进制数,零填充到6位。
从导入datetime
:
import datetime as dt
将string
转换为datetime
对象:
date = "2017-08-05T05:21:10.6582942Z"
new_date = dt.datetime.strptime(date[:-2], "%Y-%m-%dT%H:%M:%S.%f") # -2 slice to since %f only accepts 6 digits.
将datetime
对象格式化为字符串:
format_date = dt.datetime.strftime(new_date, "%Y-%m-%d %H:%M:%S") # returns your format
然而,看看你的代码,感觉你的date
已经格式化,你不需要最后的.strftime()
的使用。