Python - 将日期的字符串表示转换为 ISO 8601
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。
使用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/…