Formatieren des Datums von gestern in Python

232

Ich muss das Datum von gestern in diesem Format MMDDYYin Python finden.

So würde beispielsweise das heutige Datum folgendermaßen dargestellt: 111009

Ich kann dies leicht für heute tun, aber ich habe Probleme, es automatisch für "gestern" zu tun.

y2k
quelle

Antworten:

387

Verwenden datetime.timedelta()

>>> from datetime import date, timedelta
>>> yesterday = date.today() - timedelta(days=1)
>>> yesterday.strftime('%m%d%y')
'110909'
Jarret Hardie
quelle
1
Wenn Sie zufällig mit Pandas arbeiten, können Sie auch print((pd.to_datetime('Today') - pd.Timedelta('1 days')).strftime('%m%d%y'))
Folgendes
Wenn Sie zufällig nach Optionen suchen, können Sie auch Pendel ( pendulum.eustace.io ) verwenden: pendulum.now (). Subtrahieren (Tage = -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
quelle
21

Dies sollte tun, was Sie wollen:

import datetime
yesterday = datetime.datetime.now() - datetime.timedelta(days = 1)
print yesterday.strftime("%m%d%y")
Stef
quelle
1
Warum interessiert Sie das Datum für Personen in UTC-Offset 0 mehr als das Datum in der lokalen Zeitzone des Systems?
Jeffrey Harris
1
Ich habe das aus meinem Code kopiert. Bei der Datenbanknutzung interessieren Sie sich oft für UTC. Das UTC-Zeug wurde entfernt.
Stef
7

Alle Antworten sind richtig, aber ich möchte erwähnen, dass das Zeitdelta negative Argumente akzeptiert .

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

Könnte ich dies nur etwas internationaler gestalten und das Datum gemäß dem internationalen Standard formatieren und nicht in dem seltsamen Monat-Tag-Jahr, wie es in den USA üblich ist?

from datetime import datetime, timedelta

yesterday = datetime.now() - timedelta(days=1)
yesterday.strftime('%Y-%m-%d')
Arvid Bäärnhielm
quelle
Stimmen Sie zu, dass wir in den USA ein seltsames Datumsformat verwenden, aber das OP hat ausdrücklich dieses seltsame Format angefordert - in diesem Fall "% m% d% y".
DaveL17
@ DaveL17, fairer Punkt. Ich werde die Antwort allen außerhalb der USA überlassen, die über diese Frage stolpern.
Arvid Bäärnhielm
2

Um die Antwort von Chris zu erweitern

Wenn Sie das Datum in einer Variablen in einem bestimmten Format speichern möchten, ist dies meines Wissens der kürzeste und effektivste Weg

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

Wenn Sie es als Ganzzahl möchten (was nützlich sein kann)

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