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.

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)

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

8
Was ist der Mehrwert Ihrer Antwort gegenüber der Antwort von nneonneo, die 5 Jahre vor Ihrer veröffentlicht wurde?
Samuel Dauzon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.