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 voudrais:
>>> d = datetime.date.today()
>>> d.month
03
>>> d.day
08
Je peux le faire en écrivant des déclarations si et en concaténant un 0 au premier rang si le jour ou le mois est un chiffre mais que je me demandais s’il existait un moyen automatique de générer ce que je veux.
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 automatique moyen de faire ce que vous voulez. Donc, au sens étroit, la réponse à votre question est non.
Si vous voulez des zéros non significatifs, vous devrez les formater d'une manière 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 formateur de chaîne pour remplir un entier avec des zéros. Il agit exactement comme le printf
de C.
>>> d = datetime.date.today()
>>> '%02d' % d.month
'03'
Mise à jour pour py36: Utilisez f-strings! Pour les int
s généraux, vous pouvez utiliser le formateur d
et lui indiquer explicitement de compléter avec des zéros:
>>> d = datetime.date.today()
>>> f"{d.month:02d}"
'07'
Mais datetime
s sont spéciaux et viennent avec des formateurs spéciaux qui sont déjà remplis de zéros:
>>> f"{d:%d}" # the day
'01'
>>> f"{d:%m}" # the month
'07'