Python strftime - дата, не ведя 0?

Вы всегда можете запустить UPX на вашем exe после того, как вы его создали.

236
задан bluish 2 April 2012 в 22:08
поделиться

6 ответов

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

Я бы попытался использовать вместо этого объект нового стиля datetime , который имеет такие атрибуты, как t.year и t.month и t.day , и пропустите их через обычное мощное форматирование с помощью оператора % , который поддерживает управление ведущими нулями. Подробнее см. http://docs.python.org/library/datetime.html . Еще лучше использовать оператор "". Format () , если он есть в вашем Python, и пусть он будет еще более современным; он также имеет множество вариантов форматирования чисел. См .: http://docs.python.org/library/string.html#string-formatting .

мощное форматирование оператора % , которое поддерживает управление ведущими нулями. Подробнее см. http://docs.python.org/library/datetime.html . Еще лучше использовать оператор "". Format () , если он есть в вашем Python, и пусть он будет еще более современным; он также имеет множество вариантов форматирования чисел. См .: http://docs.python.org/library/string.html#string-formatting .

мощное форматирование оператора % , которое поддерживает управление ведущими нулями. Подробнее см. http://docs.python.org/library/datetime.html . Еще лучше использовать оператор "". Format () , если он есть в вашем Python, и пусть он будет еще более современным; он также имеет множество вариантов форматирования чисел. См .: http://docs.python.org/library/string.html#string-formatting .

1
ответ дан 23 November 2019 в 03:24
поделиться

Here is the documentation of the modifiers supported by strftime() in the GNU C library. (Like people said before, it might not be portable.) Of interest to you might be:

  • %e instead of %d will replace leading zero in day of month with a space

It works on my Python (on Linux). I don't know if it will work on yours.

22
ответ дан 23 November 2019 в 03:24
поделиться

Некоторые платформы могут поддерживать указание ширины и точности между % и буквой (например, 'd' для дня месяца), согласно http: // docs.python.org/library/time.html - но это определенно непереносимое решение (например, не работает на моем Mac ;-). Может быть, вы можете использовать замену строки (или RE для действительно неприятного формата) после strftime , чтобы исправить это? например:

>>> y
(2009, 5, 7, 17, 17, 17, 3, 127, 1)
>>> time.strftime('%Y %m %d', y)
'2009 05 07'
>>> time.strftime('%Y %m %d', y).replace(' 0', ' ')
'2009 5 7'
37
ответ дан 23 November 2019 в 03:24
поделиться

Я считаю, что фильтр форматирования даты в шаблоне Django работает быстро и легко. Он удаляет ведущие нули. Если вы не против импортировать модуль Django, проверьте это.

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date

from django.template.defaultfilters import date as django_date_filter
print django_date_filter(mydate, 'P, D M j, Y')    
10
ответ дан 23 November 2019 в 03:24
поделиться

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

Например % Y /% - M /% - D .

Это работает только на UNIX (Linux, OS X), а не Windows (включая Cygwin). В окнах вы бы использовали # , например % Y /% # м /% # D .

510
ответ дан 23 November 2019 в 03:24
поделиться

Для % d вы можете преобразовать в целое число с помощью int () , тогда он автоматически удалит ведущий 0 и станет целым числом. Затем вы можете преобразовать обратно в строку, используя str () .

2
ответ дан 23 November 2019 в 03:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: