David Foie Gras
David Foie Gras

Reputation: 2070

django How to subtract date from django datetime.date class

I have a model:

class DateModel(models.Model):
    date = models.DateField(default=None, null=True, blank=True)

and I made some object and got it:

date_obj = GroupDate.objects.all().last()
print(date_obj.date)
print(type(date_obj.date))

so that It returned this lines:

2018-11-21
<class 'datetime.date'>

Here my question,

How to get 22 days before date from date 2018-11-21?

Like this:

date_obj = GroupDate.objects.all().last()
some_int = 22
result_date = get_date_from_date(date_obj.date, some_int) # It is just example that I made.
print(result_date) # >>>2018-10-30

How can I do this?

Upvotes: 0

Views: 112

Answers (1)

GunniH
GunniH

Reputation: 186

By using timedelta.

>>> from datetime import datetime, timedelta
>>> date_obj = datetime(2018, 11, 21)
>>> some_int = 22
>>> result_date = date_obj - timedelta(days = some_int)
>>> result_date
datetime.datetime(2018, 10, 30, 0, 0)

You could also use relativedelta from dateutil which is a more powerful library with more options, docs are linked.

>>> from datetime import datetime
>>> from dateutil.relativedelta import relativedelta
>>> date_obj = datetime(2018, 11, 21)
>>> some_int = 22
>>> result_date = date_obj - relativedelta(days =+ some_int)
>>> result_date
datetime.datetime(2018, 10, 30, 0, 0)

Upvotes: 1

Related Questions