要提供给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(' ')
,但我不明白如何/在哪里实施。
答案 0 :(得分:1)
日期时间在C中实现。您发现默认情况下由Pythons tp_str
使用的str
函数只调用isoformat()
。
此外,datetime.strftime
方法调用libc strftime
函数,该函数在没有分隔符的情况下给出时区差异,而datetime.isoformat
调用一个方法,该方法是直接为Python实现的,其中有一个分隔符可以传递,在这种情况下是冒号。