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

81
在Python中,我如何将像这样的字符串转换为ISO 8601格式并保留时区:

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

请注意,原始日期是字符串,输出也应该是字符串,而不是 datetime 或类似的东西。 我对使用第三方库没有问题。

字符串的来源是什么? - dheerosaur
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

27
我该如何在这个末尾获取时区(z)? - user3412172
请参考此链接 - https://dev59.com/0GIk5IYBdhLWcg3wBqGW - kvn

35

Python内置datetime包有一个内置方法可以将datetime对象转换为isoformat格式。以下是一个示例:

Python内置的datetime包有一种内置方法可将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'

我主要是为那些在协调世界时工作且无需担心时区的人编写了此答案。您可以剥离最后6个字符以获得该字符串。

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


21
时区标识符在哪里?(本例中是Z) - jtlz2
在这种情况下,Z并不一定是必需的。date中的datetime对象是偏移量无关的,因此末尾不应该有任何时区限定符。 - wpercy
你可以这样设置时区: datetime.now(tz=timezone.utc).replace(microsecond=0).isoformat() 这将返回+00:00时区,相当于Z。 - Marc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接