Frage

Ich habe eine Datumszeit meines Django -Objekts, aber es kann zu jeder Tageszeit sein. Es kann jederzeit den Tag sein, aber ich muss meine Zeit auf 00:00:00 (und ein weiteres Datum auf 23:59:59 Uhr setzen, aber das Prinzip wird gleich sein)

end_date = lastItem.pub_date

Derzeit ist das Enddatum 2002-01-11 12:34:56 Was muss ich tun, um dies auf 00:00:00 zu ändern?

Ich habe es versucht:

end_date.hour = '00'

Aber Got: 'datetime.datetime' Objektattribut 'Zeit' ist schreibgeschützt

War es hilfreich?

Lösung

Versuche dies:

import datetime
pub = lastItem.pub_date
end_date = datetime.datetime(pub.year, pub.month, pub.day)

Andere Tipps

Die Verwendung von DateTimes 'kombinieren "mit der Zeit.min und time.max liefert beide Angaben. Zum Beispiel:

from datetime import date, datetime, time
pub_date = date.today()
min_pub_date_time = datetime.combine(pub_date, time.min) 
max_pub_date_time = datetime.combine(pub_date, time.max)  

Ergebnis mit PUB_DATE von 6/5/2013:

min_pub_date_time -> datetime.datetime (2013, 6, 5, 0, 0)

max_pub_date_time -> datetime.datetime (2013, 6, 5, 23, 59, 59, 999999)

Sind Sie sicher, dass Sie keine Daten anstelle von DateTimes verwenden möchten? Wenn Sie immer die Zeit bis Mitternacht festlegen, sollten Sie in Betracht ziehen, ein Datum zu verwenden. Wenn Sie DateTimes wirklich verwenden möchten, finden Sie hier eine Funktion, um den selben Tag um Mitternacht zu erhalten:

def set_to_midnight(dt):
    midnight = datetime.time(0)
    return datetime.datetime.combine(dt.date(), midnight)

Für TZ-bewusstes Daten sollte es sein:

datetime.combine(dt.date(), datetime.min.time(), dt.tzinfo)

datetime Instanzattribute wie Jahr, Monat, Tag, Stunde usw. sind schreibgeschützt, Sie müssen also nur eine neue erstellen datetime Objekt und zuweisen es zu end_date.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top