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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top