web-dev-qa-db-fra.com

django python date heure définie sur minuit)

J'ai une date-heure de mon objet Django mais cela peut être à tout moment de la journée. Cela peut être à tout moment de la journée, mais je dois régler mon heure à 00:00: 00 (et une autre date à 23:59:59 mais le principe sera le même)

end_date = lastItem.pub_date

actuellement, la date de fin est le 2002-01-11 12:34:56 Que dois-je faire pour obtenir ce changement à 00:00:00?

j'ai essayé:

end_date.hour = '00'

mais obtenu: 'datetime.datetime' l'attribut d'objet 'time' est en lecture seule

32
Designer023

Essaye ça:

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

L'utilisation de la "combinaison" de datetimes avec time.min et time.max donnera vos deux datetimes. Par exemple:

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)  

Résultat avec pub_date du 05/06/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)

41
raman

Êtes-vous sûr de ne pas vouloir utiliser de dates au lieu de dates? Si vous définissez toujours l'heure sur minuit, vous devriez envisager d'utiliser une date. Si vous voulez vraiment utiliser les datetimes, voici une fonction pour obtenir le même jour à minuit:

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

datetime les attributs d'instance comme l'année, le mois, le jour, l'heure, etc. sont en lecture seule , il vous suffit donc de créer un nouvel objet datetime et de l'affecter à end_date.

1
jan zegan

Pour les dates sensibles à tz, cela devrait être:

datetime.combine(dt.date(), datetime.min.time(), dt.tzinfo)
1
Antony Hatchkins