Извлечение двузначных месяцев и дней из даты Python [дубликат]
этот вопрос уже есть ответ здесь:
- формат объектов datetime 2 ответы
есть ли способ извлечь месяц и день с помощью изоформатов? Предположим, что сегодняшняя дата-8 марта 2013 года.
>>> d = datetime.date.today()
>>> d.month
3
>>> d.day
8
хочу:
>>> d = datetime.date.today()
>>> d.month
03
>>> d.day
08
Я могу сделать это, написав if заявления и конкатенации a ведущий 0 в случае, если день или месяц является одной цифрой, но было интересно, есть ли автоматический способ генерации того, что я хочу.
2 ответа:
посмотрите на типы этих свойств:
In [1]: import datetime In [2]: d = datetime.date.today() In [3]: type(d.month) Out[3]: <type 'int'> In [4]: type(d.day) Out[4]: <type 'int'>
оба являются целыми числами. Так что нет автоматическая способ сделать то, что вы хотите. Так что в узком смысле ответ на ваш вопрос нет.
Если вы хотите ведущие нули, вам придется отформатировать их так или иначе. Для этого у вас есть несколько вариантов:
In [5]: '{:02d}'.format(d.month) Out[5]: '03' In [6]: '%02d' % d.month Out[6]: '03' In [7]: d.strftime('%m') Out[7]: '03'
вы можете использовать строковый форматер для заполнения любого целого числа нулями. Он действует так же, как с
printf
.>>> d = datetime.date.today() >>> '%02d' % d.month '03'
обновлено для py36: используйте f-строки! Для генерала
int
s Вы можете использоватьd
formatter и явно сказать ему площадку с нулями:>>> d = datetime.date.today() >>> f"{d.month:02d}" '07'
но
datetime
s являются особыми и поставляются со специальными форматтерами, которые уже имеют нулевую прокладку:>>> f"{d:%d}" # the day '01' >>> f"{d:%m}" # the month '07'