Formatage de la date «d'hier» en python

232

J'ai besoin de trouver la date "d'hier" dans ce format MMDDYYen Python.

Ainsi, par exemple, la date d'aujourd'hui serait représentée comme ceci: 111009

Je peux facilement le faire pour aujourd'hui mais j'ai du mal à le faire automatiquement pour "hier".

y2k
la source

Réponses:

387

Utilisation datetime.timedelta()

>>> from datetime import date, timedelta
>>> yesterday = date.today() - timedelta(days=1)
>>> yesterday.strftime('%m%d%y')
'110909'
Jarret Hardie
la source
1
Si vous travaillez avec des pandas, vous pouvez également utiliser:print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
etna
S'il vous arrive de rechercher des options, vous pouvez également utiliser Pendulum ( pendulum.eustace.io ): pendulum.now (). Subtract (days = -1) .strftime ('% m% d% y')
AFD
165
from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%m%d%y')
Nadia Alramli
la source
21

Cela devrait faire ce que vous voulez:

import datetime
yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
print yesterday.strftime("%m%d%y")
Stef
la source
1
Pourquoi vous souciez-vous plus de la date pour les personnes en décalage UTC 0 que de la date dans le fuseau horaire local du système?
Jeffrey Harris
1
J'ai copié cela à partir de mon code, dans l'utilisation de la base de données, vous vous souciez souvent de l'UTC. Suppression du contenu UTC.
Stef
7

toutes les réponses sont correctes, mais je tiens à mentionner que le delta temporel accepte les arguments négatifs .

>>> from datetime import date, timedelta
>>> yesterday = date.today() + timedelta(days=-1)
>>> print(yesterday.strftime('%m%d%y')) #for python2 remove parentheses 
Iman Mirzadeh
la source
5

Puis-je simplement rendre cela un peu plus international et formater la date selon la norme internationale et non pas dans l'étrange mois-jour-année, ce qui est courant aux États-Unis?

from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%Y-%m-%d')
Arvid Bäärnhielm
la source
Je suis d'accord pour dire que nous utilisons un format de date étrange aux États-Unis, mais le PO a spécifiquement demandé ce format étrange - qui dans ce cas est ``% m% d% y ''.
DaveL17
@ DaveL17, juste point. Je laisserai la réponse à tous ceux en dehors des États-Unis qui tomberont sur cette question.
Arvid Bäärnhielm
2

Pour développer la réponse donnée par Chris

si vous voulez stocker la date dans une variable dans un format spécifique, c'est le moyen le plus court et le plus efficace pour autant que je sache

>>> from datetime import date, timedelta                   
>>> yesterday = (date.today() - timedelta(days=1)).strftime('%m%d%y')
>>> yesterday
'020817'

Si vous le voulez comme un entier (ce qui peut être utile)

>>> yesterday = int((date.today() - timedelta(days=1)).strftime('%m%d%y'))
>>> yesterday
20817
Pär Berge
la source