Formateo de la fecha de "ayer" en python

232

Necesito encontrar la fecha de "ayer" en este formato MMDDYYen Python.

Entonces, por ejemplo, la fecha de hoy se representaría así: 111009

Puedo hacer esto fácilmente por hoy, pero tengo problemas para hacerlo automáticamente para "ayer".

y2k
fuente

Respuestas:

387

Utilizar datetime.timedelta()

>>> from datetime import date, timedelta
>>> yesterday = date.today() - timedelta(days=1)
>>> yesterday.strftime('%m%d%y')
'110909'
Jarret Hardie
fuente
1
Si está trabajando con pandas, también puede usar:print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
Etna
Si busca opciones, también puede usar Pendulum ( pendulum.eustace.io ): pendulum.now (). Restar (días = -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
fuente
21

Esto debería hacer lo que quieras:

import datetime
yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
print yesterday.strftime("%m%d%y")
Stef
fuente
1
¿Por qué le importa más la fecha para las personas en UTC offset 0 que la fecha en la zona horaria local del sistema?
Jeffrey Harris el
1
Copié eso de mi código, en el uso de la base de datos, a menudo te importa UTC. Eliminado el material UTC.
Stef
7

todas las respuestas son correctas, pero quiero mencionar que el delta del tiempo acepta argumentos negativos .

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

¿Podría hacer esto algo más internacional y formatear la fecha de acuerdo con el estándar internacional y no en el extraño mes-día-año, que es común en los Estados Unidos?

from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%Y-%m-%d')
Arvid Bäärnhielm
fuente
De acuerdo en que usamos un formato de fecha extraño en los Estados Unidos, pero el OP solicitó específicamente ese formato extraño, que en este caso es ``% m% d% y ''.
DaveL17
@ DaveL17, punto justo. Dejaré la respuesta para todos los que se encuentran fuera de los Estados Unidos y que se topan con esta pregunta.
Arvid Bäärnhielm
2

Ampliar la respuesta dada por Chris

si quieres almacenar la fecha en una variable en un formato específico, esta es la forma más corta y efectiva que yo sepa

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

Si lo quieres como un entero (que puede ser útil)

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