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

7 浏览
0 Comments

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

在Python中,我如何将像这样的字符串转换为ISO 8601格式,同时保留时区?请注意,原始日期是字符串,输出也应该是字符串,而不是datetime或类似的东西。尽管如此,我没有使用第三方库的问题。

0
0 Comments

Python中的datetime包内置了将日期时间对象转换为ISO 8601格式的方法。下面是一个示例:

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上的这个答案,它提到了使用类似于接受的答案的第三方库。

为什么没有时区标识符(这里是Z)?

在这种情况下,并不一定是Z。datetime对象中的date是无偏移的,因此末尾不应该有时区标识符。

您可以这样使其具有时区意识:`datetime.now(tz=timezone.utc).replace(microsecond=0).isoformat()`,这样将得到+00:00时区,相当于Z。

0
0 Comments

使用dateutil库的parser模块可以将字符串表示的日期转换为ISO 8601格式。下面是一个示例:

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

然而,上述代码只能将日期转换为ISO 8601格式的字符串,而没有包含时区信息(即末尾的z)。如果需要在转换后的字符串中包含时区信息,可以参考stackoverflow上的解决方案。

具体解决方法请参考这个链接:stackoverflow.com/questions/19654578/…

0