Formatowanie „wczorajszej” daty w pythonie


232

Muszę znaleźć „wczorajszą” datę w tym formacie MMDDYYw Pythonie.

Na przykład dzisiejsza data byłaby reprezentowana w następujący sposób: 111009

Z łatwością mogę to zrobić na dziś, ale mam problem z automatycznym wykonaniem tego na „wczoraj”.

Odpowiedzi:


387

Posługiwać się datetime.timedelta()

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

1
Jeśli akurat pracujesz z pandami, możesz również użyć:print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
etna

Jeśli zdarzy ci się szukać opcji, możesz również użyć Pendulum ( pendulum.eustace.io ): pendulum.now (). Odejmij (dni = -1) .strftime ('% m% d% y')
AFD

165
from datetime import datetime, timedelta

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

21

To powinno zrobić, co chcesz:

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

1
Dlaczego bardziej obchodzi Cię data dla osób z przesunięciem 0 UTC niż data w lokalnej strefie czasowej systemu?
Jeffrey Harris

1
Skopiowałem to z mojego kodu, podczas korzystania z bazy danych często dbasz o UTC. Usunięte rzeczy UTC.
Stef

7

wszystkie odpowiedzi są poprawne, ale chcę wspomnieć, że delta czasu przyjmuje negatywne argumenty .

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

5

Czy mogę po prostu uczynić to nieco bardziej międzynarodowym i sformatować datę zgodnie z międzynarodowym standardem, a nie w dziwnym miesiącu-dniu-roku, który jest powszechny w Stanach Zjednoczonych?

from datetime import datetime, timedelta

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

Zgadzam się, że używamy dziwnego formatu daty w Stanach Zjednoczonych, ale OP specjalnie poprosił o ten dziwny format - który w tym przypadku to ``% m% d% y ''.
DaveL17,

@ DaveL17, fair point. Pozostawię odpowiedź wszystkim spoza USA, którzy natkną się na to pytanie.
Arvid Bäärnhielm

2

Aby rozwinąć odpowiedź udzieloną przez Chrisa

jeśli chcesz przechowywać datę w zmiennej w określonym formacie, jest to najkrótsza i najskuteczniejsza metoda, o ile mi wiadomo

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

Jeśli chcesz to jako liczbę całkowitą (co może być przydatne)

>>> yesterday = int((date.today() - timedelta(days=1)).strftime('%m%d%y'))
>>> yesterday
20817
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.