Reputation: 2070
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
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