【发布时间】:2017-12-03 19:56:11
【问题描述】:
我正在尝试使用 time.strftime() 函数从 python 的时间模块获取 RFC3339 兼容的输出。
通过 Linux 'date' 命令,我可以使用如下格式字符串:“date +%F_%T%:z”
$ date +%F_%T%:z
2017-06-29_16:13:29-07:00
与 python time.strftime 一起使用时,似乎不支持 %:z。
$ python
>>> import time
>>> print time.strftime("%F %T%:z")
2017-06-29 16:16:15%:z
显然,支持 '%z',但不支持 '%:z':
>>> print time.strftime("%F %T%z")
2017-05-29 16:15:35-0700
RFC3339 专门使用嵌入冒号的时区偏移量。 在我的情况下是 07:00,而不是 0700。
我认为省略对“%:z”选项的支持是由于 strftime() 的底层 C 实现不支持带有冒号的时区偏移格式化程序的版本。即 '%:z', '%: :z'等
除了编写代码以获取 %z 输出并将其重新格式化为 %:z 格式之外,是否有任何解决方法(例如,另一个 python 模块,或者我在“时间”模块中缺少的某些选项)来解决这个问题?
编辑:另一个问题 (Generate RFC 3339 timestamp in Python) 为可用于输出 RFC3339 输出的其他模块提供了解决方案。我将使用我在标题中找到的问题信息自行回答。
【问题讨论】:
-
PyPI 上有一个 RFC3339 模块,它可能会做你想做的事。