在 Python 中,如何转换这样的字符串:
2010 年 12 月 16 日星期四 12:14:05 +0000
到 ISO 8601 格式,同时保持时区?
请注意,原始日期是字符串,输出也应该是字符串,而不是datetime
类似的东西。
不过,我使用第三方库没有问题。
使用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
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 doesn't have very good internal library support for timezones, for more details and solution you can refer to this answer on stackoverflow, which mentions usage of 3rd party libraries similar to accepted answer.