如何在python中转换此字符串

时间:2018-02-07 11:59:47

标签: python datetime

2018-02-06T14:45:03.0040554Z

无法将此字符串转换为日期时间。

datetime.strptime('2018-02-06T14:45:03.0040554Z', '%Y-%m-%dT%H:%M:%fZ')

我正在尝试这个并且它不起作用。

datetime.strptime('2018-02-06T14:45:03Z', '%Y-%m-%dT%H:%M:%fZ')

这项工作适用于上述时间格式。

但我从第三方API获取此时间字符串,因此无法更改其格式。

3 个答案:

答案 0 :(得分:4)

如果您可以使用 dateutil 模块,则可以执行此操作。

from dateutil import parser
print parser.parse('2018-02-06T14:45:03.0040554Z')

<强>输出:

2018-02-06 14:45:03.004055+00:00

使用日期时间。看起来你错过了秒参数,微秒需要6你有7。

import datetime
print datetime.datetime.strptime('2018-02-06T14:45:03.004055Z', '%Y-%m-%dT%H:%M:%S.%fZ')
print datetime.datetime.strptime('2018-02-06T14:45:03Z', '%Y-%m-%dT%H:%M:%SZ') 

<强>输出

2018-02-06 14:45:03.004055
2018-02-06 14:45:03

答案 1 :(得分:1)

一种方法是使用pandas

import pandas as pd

pd.to_datetime('2018-02-06T14:45:03.0040554Z').to_pydatetime()

'2018-02-06 14:45:03.004055'

答案 2 :(得分:0)

您的输入格式非常奇怪,因为它在第二个分数中有7个数字

看看旧问题:How do I convert a date string containing 7 digits in milliseconds into a date in Python

您可以拆分/重新加入字符串并使用'%Y-%m-%dT%H:%M:%S.%fZ'或使用dateutil.parser.parse