Python - 将日期的字符串表示形式转换为ISO 8601

时间:2010-12-16 12:22:36

标签: python datetime iso8601

在Python中,我该如何转换这样的字符串:

  

Thu,2010年12月16日12:14:05 +0000

符合ISO 8601格式,同时保留时区?

请注意,原始日期是字符串,输出也应该是字符串,而不是datetime或类似的东西。

但是,使用第三方库没有问题。

2 个答案:

答案 0 :(得分:77)

使用dateutil

import dateutil.parser as parser
text = 'Thu, 16 Dec 2010 12:14:05 +0000'
date = parser.parse(text)
print(date.isoformat())
# 2010-12-16T12:14:05+00:00

答案 1 :(得分:20)

Python内置datetime包具有内置方法,可将datetime对象转换为isoformat。这是一个例子:

>>>from datetime import datetime
>>>date = datetime.strptime('Thu, 16 Dec 2010 12:14:05', '%a, %d %b %Y %H:%M:%S')
>>>date.isoformat()

输出

'2010-12-16T12:14:05'

我主要是为那些在UTC工作并且不需要担心时区的人写这个答案。你可以去掉最后6个字符来获得那个字符串。

Python 2没有很好的内部库支持时区,有关更多详细信息和解决方案,您可以参考stackoverflow上的this answer,其中提到使用类似于已接受答案的第三方库。