Подсчет кол-ва дней Django
Имеется проект написанный на Django.
В нем создана модель проекты.
В этой модели столбцы date-start & date_end.
Необходимо реализовать таким образом, чтобы подсчет был дней от начала до конца проекта с учетом сегодняшнего дня. То есть - есть 3 даты (01 01 2000 - 01 02 2000(это время проекта) и допустим сегодняшняя дата 15 01 2000).
Сейчас есть форма по которой высчитываются дни
def diff_date(self):
return (self.date_end - self.date_start).days
таким образом я вывожу общее количество дней на проект. Но как сделать так чтобы это общее кол-во дней выводилось с учетом сегодняшнего дня : То есть разница между датами 31 день. в итоге мне надо из 31 - 15 чтобы получить кол-во дней которое осталось.
Ответы (1 шт):
Можно сделать с помощью datetime библиотеки
import datetime
date_start = datetime.date(2020, 5, 1) # Начало мая 2020 (начало проекта)
date_end = datetime.date(2020, 6, 1) # Начало июня 2020 (конец проекта)
project_time = date_end - date_start # Количество дней для проекта
date_now = datetime.date.today() # Сегодняшняя дата
val1 = date_end - date_now # Сколько дней до конца проекта от текущего дня
val2 = date_now - date_start # Сколько дней прошло от начала проекта до текущего дня
print(project_time, " | ", val1, " | ", val2)
Можно попробовать сделать так:
from django.conf import settings
from django.db import models
from django.utils import timezone
import datetime
class Project(models.Model):
date_start = models.DateTimeField(blank=True, null=True)
date_end = models.DateTimeField(blank=True, null=True)
def diff_date(self):
return (self.date_end - self.date_start).days, (self.date_end.date() - datetime.date.today()).days, (datetime.date.today() - self.date_start.date()).days
Про преобразование DateTimeField в datetime.date есть тут: https://stackoverflow.com/questions/35300460/get-date-from-a-django-datetimefield