Показать символ : в смещении часового пояса, используя datetime.strftime

Какую строку формата нужно указать для 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'

Откуда __str__ поведение datetime получает это дополнительное двоеточие в смещении? Я просмотрел параметры форматирования и смог только найдите %z и %Z для +ЧЧММ или имени соответственно.

Я посмотрел на реализацию datetime.__str__, но не нашел подсказок, там просто написано pass (?!). Я думаю, что в конечном итоге он делегирует isoformat(' '), но я не понимаю, как/где это реализовано.


person wim    schedule 29.05.2014    source источник


Ответы (1)


Дата и время реализованы в C. Там вы обнаружите, что функция для tp_str, которая используется Pythons str по умолчанию, просто вызывает isoformat().

Далее метод datetime.strftime вызывает функцию strftime libc, которая выдает разницу часовых поясов без разделителя, тогда как datetime.isoformat вызывает метод, реализованный непосредственно для Python, где можно передать разделитель, в данном случае двоеточие.

person tynn    schedule 29.05.2014