161 votes

Extraction des mois et des jours à deux chiffres d'une date Python

Existe-t-il un moyen d'extraire le mois et le jour en utilisant des isoformats ? Supposons que la date d'aujourd'hui est le 8 mars 2013.

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

Je veux :

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

Je peux le faire en écrivant des instructions if et en concaténant un 0 en tête au cas où le jour ou le mois est un chiffre unique, mais je me demandais s'il existait un moyen automatique de générer ce que je veux.

256voto

Roland Smith Points 10392

Regardez les types de ces propriétés :

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

Les deux sont des entiers. Il n'y a donc pas automatique pour faire ce que vous voulez. Donc au sens strict, la réponse à votre question est pas de .

Si vous voulez des zéros en tête, vous devrez les formater d'une manière ou d'une autre. Pour cela, vous avez plusieurs possibilités :

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'

In [8]: f'{d.month:02d}'
Out[8]: '03'

51voto

eduffy Points 17061

Vous pouvez utiliser un formateur de chaîne pour compléter n'importe quel nombre entier par des zéros. Il agit exactement comme la fonction printf .

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

Mis à jour pour py36 : Utilisez des cordes F ! Pour le général int vous pouvez utiliser le d et lui demander explicitement de compléter avec des zéros :

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

Mais datetime sont spéciales et sont livrées avec des formateurs spéciaux qui sont déjà dotés d'une marge de zéro :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X