Python datetime - Feste Stunde und Minute nach Verwendung von strptime zum Abrufen von Tag, Monat und Jahr

173

Ich habe erfolgreich etwas vom 26 Sep 2012Format in Folgendes konvertiert 26-09-2012:

datetime.strptime(request.POST['sample_date'],'%d %b %Y')

Ich weiß jedoch nicht, wie ich die Stunde und Minute von etwas wie dem oben genannten auf 11:59 einstellen soll. Weiß jemand, wie man das macht?

Beachten Sie, dass dies ein zukünftiges oder ein beliebiges Datum sein kann, nicht nur das aktuelle Datum.

user1678031
quelle

Antworten:

362

Verwendung datetime.replace:

from datetime import datetime
date = datetime.strptime('26 Sep 2012', '%d %b %Y')
newdate = date.replace(hour=11, minute=59)
nneonneo
quelle
Danke für die schnelle Antwort! :) Nur neugierig, ob es eine Möglichkeit gibt, dies ohne die zusätzliche Datumsvariable zu tun? (Ich bin ein Python-Neuling)
user1678031
2
Ja, tu es einfach date = datetime.strptime('26 Sep 2012', '%d %b %Y').replace(hour=11, minute=59). Ich habe die zusätzliche Variable verwendet, damit die Zeile nicht zu lang ist :)
nneonneo
14
Ebenfalls erwähnenswert: Gibt datetime.replaceeine neue Kopie der datetime zurück (da datetimeunveränderlich ist): es ist str.replacein dieser Hinsicht ähnlich .
Nneonneo
Wie kann ich nach dem 01.06.2016 alles entfernen, damit Stunde, Minute und Sekunde verschwinden?
PV8
46

datetime.replace () bietet die besten Optionen. Außerdem können Tag, Jahr und Monat ersetzt werden.

Angenommen, wir haben ein datetimeObjekt und das Datum wird wie folgt dargestellt: "2017-05-04"

>>> from datetime import datetime
>>> date = datetime.strptime('2017-05-04',"%Y-%m-%d")
>>> print(date)
2017-05-04 00:00:00
>>> date = date.replace(minute=59, hour=23, second=59, year=2018, month=6, day=1)
>>> print(date)
2018-06-01 23:59:59
Abhay Chauhan
quelle
8
Was ist der Mehrwert Ihrer Antwort gegenüber der Antwort von nneonneo, die 5 Jahre vor Ihrer veröffentlicht wurde?
Samuel Dauzon