Подтвердить что ты не робот

Django python date time установлен в полночь

У меня есть дата моего объекта django, но это может быть любое время дня. Это может быть в любое время в течение дня, но мне нужно установить время до 00:00:00 (а другая дата до 23:59:59, но принцип будет таким же)

end_date = lastItem.pub_date

в настоящее время дата окончания - 2002-01-11 12:34:56 Что мне нужно сделать, чтобы изменить это на 00:00:00?

Я попытался:

end_date.hour = '00'

но получил: 'datetime.datetime' атрибут объекта 'время' доступен только для чтения

4b9b3361

Ответ 1

Попробуйте следующее:

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

Ответ 2

Использование datetimes "объединить" с time.min и time.max даст оба ваших дата. Например:

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)  

Результат с pub_date от 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)

Ответ 3

Вы уверены, что не хотите использовать даты вместо datetimes? Если вы всегда устанавливаете время до полуночи, вам следует рассмотреть возможность использования даты. Если вы действительно хотите использовать datetimes, вот функция, чтобы получить тот же день в полночь:

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

Ответ 4

datetime атрибуты экземпляра, такие как год, месяц, день, час и т.д. только для чтения, вам просто нужно создать новый datetime и назначьте его end_date.

Ответ 5

Для дат tz-aware это должно быть:

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