Wyodrębnianie dwucyfrowych miesięcy i dni Z daty Pythona [duplikat]

To pytanie ma już odpowiedź tutaj:

Czy istnieje sposób, aby wyodrębnić miesiąc i dzień za pomocą isoformatów? Załóżmy, że dzisiejsza data to 8 marca 2013.

>>> d = datetime.date.today()
>>> d.month
3
>>> d.day
8

Chcę:

>>> d = datetime.date.today()
>>> d.month
03
>>> d.day
08

Mogę to zrobić pisząc if I konkatenując wiodące 0 W przypadku, gdy dzień lub miesiąc jest jedną cyfrą, ale zastanawiałem się, czy istnieje automatyczny sposób generowania tego, co chcę.

Author: alex, 2013-03-20

2 answers

Spójrz na typy tych właściwości:

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'>

Obie są liczbami całkowitymi. Więc nie ma automatycznego sposobu, aby zrobić to, co chcesz. Więc w wąskim znaczeniu, odpowiedź na twoje pytanie brzmi nie .

Jeśli chcesz zera wiodące, musisz sformatować je w taki czy inny sposób. Do tego masz kilka opcji:

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'
 117
Author: Roland Smith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-19 20:24:35

Możesz użyć programu do formatowania łańcuchów, aby wstawić dowolną liczbę całkowitą z zerami. Działa jak C printf.

>>> d = datetime.date.today()
>>> '%02d' % d.month
'03'

Aktualizacja dla py36: użyj f-stringów! Dla ogólnego int S można użyć formatera d i jawnie powiedzieć go do padu z zerami:

 >>> d = datetime.date.today()
 >>> f"{d.month:02d}"
 '07'

Ale datetimeS są specjalne i pochodzą ze specjalnymi formaterami, które są już zero wyściełane:

 >>> f"{d:%d}"  # the day
 '01'
 >>> f"{d:%m}"  # the month
 '07'
 11
Author: eduffy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-01 14:28:35