Как получить только дату после вычитания двух полей даты - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь вычесть два поля данных и результат в днях. Но у меня есть время и на выходе. Как получить только дни, а не время.

Вот мой код:

class ItemTable(models.Model):
    expdate = models.DateField("EXP Date", null=True, blank=True)

 def days_to_exp(self):
    if self.expdate:
        now = datetime.date.today()
        exp = str(self.expdate - now)

        if exp > "1":
            return exp
        elif exp < "1" and exp > "0":
            return "Today"
        else:
            return "Expired"

выход:

12 дней, 0:00:00, 4 дня, 0:00:00 ... и т. Д.

Я просто хочу получить результат как: 12 дней, 4 дня ..... и т. Д.

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

Результатом вычитания между datetime.date экземплярами является объект с типом datetime.timedelta, который представляет длительность не datetime.date или datetime.datatime.Вы можете узнать, как долго timedelta получает доступ к его свойству .days.

, например:

result = now().today() - (now()+timedelta(days=10))
assert(result.days==10)
0 голосов
/ 12 июня 2019

Результатом вычитания одного datetime.date из другого является timedelta объект.Вы можете получить доступ к атрибуту .days этого timedelta объекта, чтобы получить то, что вам нужно.

> today = datetime.now().date()
> tomorrow = today + timedelta(days=1)
> (tomorrow - today).days
1
> (today - tomorrow).days
-1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...