Extraire des mois et des jours à deux chiffres d'une date Python [dupliquer]
cette question a déjà une réponse ici:
- format des objets datetime 2 réponses
Existe-t-il un moyen d'extraire mois et jour à l'aide d'isoformats? Supposons que la date d'aujourd'hui soit 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 si des déclarations et concaténant un 0 de tête dans le cas où le jour ou le mois est un seul chiffre, mais se demandait s'il y avait un moyen automatique de générer ce que je veux.
2 réponses
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. Donc, il n'y a pas de automatique façon de faire ce que vous voulez. Ainsi, au sens étroit, la réponse à votre question Est Non .
si vous voulez des zéros de tête, vous devrez les formater d'une façon ou d'une autre. Pour cela, vous avez plusieurs options:
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'
vous pouvez utiliser un formatteur de chaîne pour garnir n'importe quel entier avec des zéros. Il agit comme C ' printf
.
>>> d = datetime.date.today()
>>> '%02d' % d.month
'03'
mise à Jour pour py36: l'Utilisation de f-cordes! Pour le général int
vous pouvez utiliser le formatteur d
et lui dire explicitement de pad avec des zéros:
>>> d = datetime.date.today()
>>> f"{d.month:02d}"
'07'
mais datetime
s sont spéciaux et viennent avec des formateuses spéciales qui sont déjà zéro rembourré:
>>> f"{d:%d}" # the day
'01'
>>> f"{d:%m}" # the month
'07'