Python - 将日期字符串转换为ISO 8601

81 投票
2 回答
117760 浏览
提问于 2025-04-16 08:37

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

Thu, 16 Dec 2010 12:14:05 +0000

转换成ISO 8601格式,同时保持时区信息呢?

请注意,原始日期是字符串,输出也应该是字符串,而不是datetime或其他类型。

我可以使用第三方库,没有问题。

2 个回答

35

Python自带的datetime库里有一个方法,可以把日期时间对象转换成ISO格式。下面是一个例子:

>>>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对时区的支持不是很好,如果想了解更多细节和解决方案,可以参考这个回答,里面提到了使用一些第三方库的方法,和被接受的答案类似。

112

使用 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

撰写回答