it-swarm.com.de

Python hat datetime als eine bestimmte Uhrzeit festgelegt

Ich versuche, das Datum gestern um 23.30 Uhr zu erhalten.

Hier ist mein Code:

    import datetime
    yesterday = datetime.date.today () - datetime.timedelta (days=1) 
    PERIOD=yesterday.strftime ('%Y-%m-%d') 
    new_period=PERIOD.replace(hour=23, minute=30)
    print new_period

ich erhalte jedoch diesen Fehler:

TypeError: replace() takes no keyword arguments

jede Hilfe wäre dankbar.

18
jxn

Ändern Sie zunächst datetime.date.today() in datetime.datetime.today(), damit Sie die Tageszeit ändern können.

Rufen Sie dann replace auf, bevor Sie die Zeit in einen String umwandeln.

Also statt:

PERIOD=yesterday.strftime ('%Y-%m-%d') 
new_period=PERIOD.replace(hour=23, minute=30)

Mach das:

new_period=yesterday.replace(hour=23, minute=30).strftime('%Y-%m-%d')
print new_period

Denken Sie auch daran, dass die Zeichenfolge, in die Sie die Zeichenfolge konvertieren, keine Informationen zu Stunde oder Minute anzeigt. Wenn Sie daran interessiert sind, fügen Sie %H für Stunde und %M für die Minuteninformationen zu Ihrer Formatzeichenfolge hinzu.

33
huu

Sie können datetime.combine verwenden (Datum, Uhrzeit, tzinfo = self.tzinfo)

import datetime
yesterday = datetime.date.today () - datetime.timedelta (days=1)
t = datetime.time(hour=23, minute=30)
print(datetime.datetime.combine(yesterday, t))
3
Yuriy Arhipov

Ist das was du willst?

from datetime import datetime
yesterday = datetime(2014, 5, 12, 23, 30)
print yesterday

bearbeitet

from datetime import datetime
import calendar

diff = 60 * 60 * 24

yesterday = datetime(*datetime.fromtimestamp(calendar.timegm(datetime.today().utctimetuple()) - diff).utctimetuple()[:3], hour=23, minute=30)

print yesterday
0
andmart