使用datetime.strftime在时区偏移中显示:字符

时间:2014-05-29 13:18:32

标签: python datetime timezone timezone-offset

要提供给strftime的格式字符串是什么,它会提供与isoformat(' ')相同的输出?

>>> from datetime import datetime
>>> import pytz 
>>> dt = datetime.now(tz=pytz.UTC).replace(microsecond=0)
>>> print dt
2014-05-29 13:11:00+00:00
>>> dt.isoformat(' ')
'2014-05-29 13:11:00+00:00'
>>> dt.strftime('%Y-%m-%d %H:%M:%S%z')
'2014-05-29 13:11:00+0000'

datetime的__str__行为在偏移量中得到了多余的冒号?我查看formatting options并且只能找到%z和%Z分别为+ HHMM或名称。

我查看了datetime.__str__的实现,但没有提示,只是说pass(?!)。我认为它最终会委托isoformat(' '),但我不明白如何/在哪里实施。

1 个答案:

答案 0 :(得分:1)

日期时间在C中实现。您发现默认情况下由Pythons tp_str使用的str函数只调用isoformat()

此外,datetime.strftime方法调用libc strftime函数,该函数在没有分隔符的情况下给出时区差异,而datetime.isoformat调用一个方法,该方法是直接为Python实现的,其中有一个分隔符可以传递,在这种情况下是冒号。