Python:如何将长datetime字符串转换为所需格式



这里是: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()的使用。

最新更新