Formattazione della data di "ieri" in pitone


232

Devo trovare la data di "ieri" in questo formato MMDDYYin Python.

Ad esempio, la data odierna sarebbe rappresentata in questo modo: 111009

Posso farlo facilmente per oggi, ma ho difficoltà a farlo automaticamente per "ieri".

Risposte:


387

Uso datetime.timedelta()

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

1
Se ti capita di lavorare con i panda, puoi anche usare:print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
etna,

Se ti capita di cercare delle opzioni, puoi anche usare Pendulum ( pendulum.eustace.io ): pendulum.now (). Sottrarre (giorni = -1) .strftime ('% m% d% y')
AFD

165
from datetime import datetime, timedelta

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

21

Questo dovrebbe fare quello che vuoi:

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

1
Perché ti interessa di più la data per le persone con offset UTC 0 rispetto alla data nel fuso orario locale del sistema?
Jeffrey Harris,

1
L'ho copiato dal mio codice, nell'uso del database ti interessa spesso UTC. Rimosso il materiale UTC.
Stef

7

tutte le risposte sono corrette, ma voglio menzionare che il delta del tempo accetta argomenti negativi .

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

5

Potrei semplicemente rendere questo un po 'più internazionale e formattare la data secondo lo standard internazionale e non nello strano mese-giorno-anno, che è comune negli Stati Uniti?

from datetime import datetime, timedelta

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

Concordo sul fatto che negli Stati Uniti utilizziamo un formato di data strano, ma il PO ha specificamente richiesto quel formato strano, che in questo caso è ``% m% d% y ''.
DaveL17,

@ DaveL17, punto giusto. Lascerò la risposta a tutti gli Stati Uniti fuori che si imbattono in questa domanda.
Arvid Bäärnhielm,

2

Per espandere la risposta data da Chris

se si desidera memorizzare la data in una variabile in un formato specifico, questo è il modo più breve ed efficace per quanto ne so

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

Se lo vuoi come numero intero (che può essere utile)

>>> yesterday = int((date.today() - timedelta(days=1)).strftime('%m%d%y'))
>>> yesterday
20817
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.