У меня есть следующий код, и я получаю вышеуказанную ошибку. Поскольку я новичок в python, мне трудно понять синтаксис здесь и как я могу исправить ошибку:
if not start or date < start: start = date
У меня есть следующий код, и я получаю вышеуказанную ошибку. Поскольку я новичок в python, мне трудно понять синтаксис здесь и как я могу исправить ошибку:
if not start or date < start: start = date
Существует метод datetime.date()
для преобразования из даты и времени в дату.
Чтобы сделать обратное преобразование, вы можете использовать эту функцию datetime.datetime(d.year, d.month, d.day)
Вы можете использовать метод datetime.datetime.combine
для сравнения объекта date с объектом datetime, а затем сравнить преобразованный объект с другим объектом datetime.
import datetime
dt1 = datetime.datetime(2011, 03, 03, 11, 12)
day = datetime.date(2011, 03, 02)
dt2 = datetime.datetime.combine(day, datetime.time(0, 0))
print dt1 > dt2
Предполагая, что начало - это datetime, используйте его следующим образом:
if not start or date < start.date(): start = date
Я не думаю, что в python необходимо преобразовать дату в datetime, так как вы можете просто сделать противоположное и сравнить.
Или у вас есть другие методы для создания нового datetime, используя дату для преобразования и время в 00:00.
Вы можете преобразовать datetime.date
в datetime.datetime
, построив последнее, используя первые атрибуты year
, month
и day
:
from datetime import datetime, day
d = day(2000, 12, 31)
dt = datetime(d.year, d.month, d.day)
Благодаря Steven для решения.
Ваши переменные start и date имеют разные типы, я думаю. Один из них - дата, а дата - дата. Вам может потребоваться показать больше кода, чтобы получить достойную помощь.
Но посмотрите на это: http://docs.python.org/library/datetime.html#available-types
Он сообщает вам, что datetime.datetime имеет атрибуты, такие как день, месяц и год, точно так же, как datetime.date.
Эта проблема возникает, когда вы пытаетесь сравнить поле даты (DateField
) и поле datetime (DateTimeField
).
Решение будет проверяться, когда вы определили поля в своих моделях и убедитесь, что типы являются однородными.
Я предлагаю вам заменить все DateField
на DateTimeField
.