Почему "% -d" или "% -e" удаляют ведущее пространство или ноль?

На SO вопрос 904928 (Python strftime - дата без начального 0?) Райан ответил:

На самом деле у меня была та же проблема, и я понял, что, если вы добавите дефис между% и буквой, вы можете удалить начальный ноль.

Например,% Y/% -m/% -d.

Я столкнулся с той же проблемой, и это было отличное решение, НО, почему это ведет себя так?

>>> import datetime
>>> datetime.datetime(2015, 3, 5).strftime('%d')
'05'

>>> datetime.datetime(2015, 3, 5).strftime('%-d')
'5'

# It also works with a leading space
>>> datetime.datetime(2015, 3, 5).strftime('%e')
' 5'

>>> datetime.datetime(2015, 3, 5).strftime('%-e')
'5'

# Of course other numbers doesn't get stripped
>>> datetime.datetime(2015, 3, 15).strftime('%-e')
'15'

Я не могу найти документацию по этому поводу? → Python DateTime Документы/Python строковые операции

Кажется, что это не работает на машинах с Windows, ну, я не использую Windows, но было бы интересно узнать, почему это не работает?

Ответ 1

Python datetime.strftime() делегирует функции C strftime(), которая зависит от платформы:

Полный набор поддерживаемых форматов зависит от разных платформ, потому что Python вызывает функцию C библиотеки strftime() платформы C и вариации платформы являются общими. Чтобы увидеть полный набор кодов формата поддерживаемый на вашей платформе, обратитесь к документации по strftime (3).

Заметки Glibc для strftime (3):

- (тире) Не вставляйте числовую строку результата.

Результат на моей машине Ubuntu:

>>> from datetime import datetime
>>> datetime.now().strftime('%d')
'07'
>>> datetime.now().strftime('%-d')
'7'