Django Python Data ora impostata su mezzanotte
-
27-10-2019 - |
Domanda
Ho un tempo di data del mio oggetto Django ma può essere in qualsiasi momento della giornata. Può essere in qualsiasi momento durante il giorno, ma devo dedicare il mio tempo alle 00:00:00 (e un'altra data alle 23:59:59 ma il principio sarà lo stesso)
end_date = lastItem.pub_date
Attualmente la data di fine è 2002-01-11 12:34:56 Cosa devo fare per farlo cambiarlo alle 00:00:00?
Provai:
end_date.hour = '00'
Ma ottenuto: "Datetime.Datetime" L'attributo dell'oggetto "tempo" è di sola lettura
Soluzione
Prova questo:
import datetime
pub = lastItem.pub_date
end_date = datetime.datetime(pub.year, pub.month, pub.day)
Altri suggerimenti
Utilizzando la "combinazione" di DateTimes con il tempo.min e time.max fornirà entrambi i tuoi dati. Per esempio:
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)
Risultato con Pub_Date del 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)
Sei sicuro di non voler usare le date anziché DateTimes? Se imposti sempre l'ora a mezzanotte, dovresti prendere in considerazione l'utilizzo di una data. Se vuoi davvero usare DateTimes, ecco una funzione per ottenere lo stesso giorno a mezzanotte:
def set_to_midnight(dt):
midnight = datetime.time(0)
return datetime.datetime.combine(dt.date(), midnight)
Per le date consapevole di TZ dovrebbe essere:
datetime.combine(dt.date(), datetime.min.time(), dt.tzinfo)
datetime
Attributi di istanza come anno, mese, giorno, ora, ecc. sola lettura, quindi devi solo creare un nuovo datetime
oggetto e assegnarlo a end_date
.