Extracting double-digit months and days from a Python date [duplicate] Extracting double-digit months and days from a Python date [duplicate] python python

Extracting double-digit months and days from a Python date [duplicate]


Look at the types of those properties:

In [1]: import datetimeIn [2]: d = datetime.date.today()In [3]: type(d.month)Out[3]: <type 'int'>In [4]: type(d.day)Out[4]: <type 'int'>

Both are integers. So there is no automatic way to do what you want. So in the narrow sense, the answer to your question is no.

If you want leading zeroes, you'll have to format them one way or another. For that you have several options:

In [5]: '{:02d}'.format(d.month)Out[5]: '03'In [6]: '%02d' % d.monthOut[6]: '03'In [7]: d.strftime('%m')Out[7]: '03'In [8]: f'{d.month:02d}'Out[8]: '03'


you can use a string formatter to pad any integer with zeros. It acts just like C's printf.

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

Updated for py36: Use f-strings! For general ints you can use the d formatter and explicitly tell it to pad with zeros:

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

But datetimes are special and come with special formatters that are already zero padded:

 >>> f"{d:%d}"  # the day '01' >>> f"{d:%m}"  # the month '07'