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".

Réponses:


387

Utilisation datetime.timedelta()

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

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

21

Cela devrait faire ce que vous voulez:

import datetime
yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
print yesterday.strftime("%m%d%y")

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 

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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.