ti-enxame.com

django python data e hora definidas como meia-noite

Eu tenho uma data e hora do meu objeto Django, mas pode ser a qualquer hora do dia. Pode ser a qualquer hora do dia, mas preciso definir minha hora para 00:00: 00 (e outra data para 23:59:59, mas o princípio será o mesmo)

end_date = lastItem.pub_date

atualmente a data final é 2002-01-11 12:34:56 O que preciso fazer para que isso seja alterado para 00:00:00?

eu tentei:

end_date.hour = '00'

mas obteve: 'datetime.datetime' atributo do objeto 'time' é somente leitura

32
Designer023

Tente o seguinte:

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

O uso de "combinar" o datetime com o time.min e time.max fornecerá os dois horários. Por exemplo:

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)  

Resultado com pub_date de 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

Tem certeza de que não deseja usar datas em vez de datas? Se você estiver sempre definindo o horário para meia-noite, considere usar uma data. Se você realmente deseja usar as datas, aqui está uma função para obter o mesmo dia à meia-noite:

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

datetime atributos de instância como ano, mês, dia, hora etc. são somente leitura ; portanto, você só precisa criar um novo objeto datetime e atribuí-lo a end_date.

1
jan zegan

Para datas com reconhecimento de tz, deve ser:

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