Formateo de la fecha de “ayer” en python

3 minutos de lectura

avatar de usuario
y2k

Necesito encontrar la fecha de “ayer” en este formato MMDDYY en Python.

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

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

avatar de usuario
Jarret Hardie

Usar datetime.timedelta()

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

  • Si está trabajando con pandas, también puede usar: print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))

    – etna

    2 de octubre de 2017 a las 7:39

  • Si busca opciones, también puede usar Pendulum (péndulo.eustace.io): pendulum.now().subtract(days=-1).strftime(‘%m%d%y’)

    – AFD

    15 mayo 2019 a las 11:22

from datetime import datetime, timedelta

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

avatar de usuario
Stef

Esto debería hacer lo que quieras:

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

  • ¿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

    11 de noviembre de 2009 a las 0:09

  • Copié eso de mi código, en el uso de la base de datos a menudo te preocupas por UTC. Se eliminaron las cosas de UTC.

    – Stef

    11 de noviembre de 2009 a las 0:46

todas las respuestas son correctas, pero quiero mencionar ese tiempo delta acepta argumentos negativos.

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

avatar de usuario
Arvid Bäärnhielm

¿Podría hacer esto un poco 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 EE. UU.?

from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%Y-%m-%d')

  • 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

    26 de marzo de 2019 a las 12:31

  • @ DaveL17, punto justo. Dejaré la respuesta para todos los que se encuentren fuera de los EE. UU. con esta pregunta.

    – Arvid Bäärnhielm

    29 de marzo de 2019 a las 12:19

avatar de usuario
Comunidad

Para ampliar la respuesta dada por Chris

si desea 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 número entero (que puede ser útil)

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

  • 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

    26 de marzo de 2019 a las 12:31

  • @ DaveL17, punto justo. Dejaré la respuesta para todos los que se encuentren fuera de los EE. UU. con esta pregunta.

    – Arvid Bäärnhielm

    29 de marzo de 2019 a las 12:19

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad