Ответ 1
Попробуйте следующее:
import datetime
pub = lastItem.pub_date
end_date = datetime.datetime(pub.year, pub.month, pub.day)
У меня есть дата моего объекта 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' атрибут объекта 'время' доступен только для чтения
Попробуйте следующее:
import datetime
pub = lastItem.pub_date
end_date = datetime.datetime(pub.year, pub.month, pub.day)
Использование 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)
Вы уверены, что не хотите использовать даты вместо datetimes? Если вы всегда устанавливаете время до полуночи, вам следует рассмотреть возможность использования даты. Если вы действительно хотите использовать datetimes, вот функция, чтобы получить тот же день в полночь:
def set_to_midnight(dt):
midnight = datetime.time(0)
return datetime.datetime.combine(dt.date(), midnight)
datetime
атрибуты экземпляра, такие как год, месяц, день, час и т.д. только для чтения, вам просто нужно создать новый datetime
и назначьте его end_date
.
Для дат tz-aware это должно быть:
datetime.combine(dt.date(), datetime.min.time(), dt.tzinfo)