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

Posted

技术标签:

【中文标题】Python - 将日期的字符串表示形式转换为 ISO 8601【英文标题】:Python - Convert string representation of date to ISO 8601 【发布时间】:2011-05-26 12:46:08 【问题描述】:

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

2010 年 12 月 16 日星期四 12:14:05 +0000

转换为 ISO 8601 格式,同时保留时区?

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

不过,我使用第三方库没有问题。

【问题讨论】:

字符串的来源是什么? 【参考方案1】:

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

【讨论】:

我将如何获得最后的时区 (z)?【参考方案2】:

Python 内置 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 对时区没有很好的内部库支持,有关更多详细信息和解决方案,您可以参考 *** 上的this answer,其中提到了类似于公认答案的 3rd 方库的使用。

【讨论】:

时区限定符(本例中为 Z)在哪里? 在这种情况下不一定是Zdate 中的日期时间对象是原始偏移量,因此末尾不应有任何时区限定符。 您可以像 datetime.now(tz=timezone.utc).replace(microsecond=0).isoformat() 一样让它知道,这将导致时区为 +00:00,相当于 Z

以上是关于Python - 将日期的字符串表示形式转换为 ISO 8601的主要内容,如果未能解决你的问题,请参考以下文章

python 将字符串'月/日/年'转换为提供语言的日期形式。

将List的String表示形式转换为Dictionary Python

php怎么将指定日期转换为时间戳

python中,有个字符串形式的时间戳,如何转换为日期呢

如何在 pandas python 中将字符串转换为日期时间格式?

SQL Server中如何将特定形式字符串转换为时间格式。并将该时间进行加减