How to find a month later from a date with django?

I want to find a month later from the date, but I do not know how to do it.

Suppose I have this date:

08.03.2012 

I want to find a month later from this date automatically:

 08.04.2012 

Does anyone know how to do this?

+6
source share
3 answers

From dateutil:

 >>> import datetime >>> d1 = datetime.date.today() >>> from dateutil.relativedelta import relativedelta >>> d1 + relativedelta(months=1) datetime.date(2012, 4, 8) >>> d2 = datetime.date(year=2012,month=1,day=31) >>> d2 + relativedelta(months=1) datetime.date(2012, 2, 29) 
+25
source

As Niklas noted, as the months vary in length, one month from today can be rather mixed.

Each industry has a kind of agreement; The result may vary depending on your goals. For example, will it be used to calculate interest? will it be used to generate recurring bills?

If you want 30 days from today:

 >>> import datetime >>> d1 = datetime.date.today() >>> d1 datetime.date(2012, 3, 8) >>> d1 + datetime.timedelta(30) datetime.date(2012, 4, 7) 

Maybe you do not want if the month has 31 days:

 >>> d2 = datetime.date(2012, 1, 1) >>> d2 + datetime.timedelta(30) datetime.date(2012, 1, 31) >>> import calendar >>> calendar.monthrange(2012, 1) (6, 31) >>> d2 + datetime.timedelta(calendar.monthrange(d2.year, d2.month)[1]) datetime.date(2012, 2, 1) 

However, it may not be the result you expect if there are less than 30 days in the next month:

 >>> d3 = datetime.date(2012, 1, 31) >>> d3 + datetime.timedelta(calendar.monthrange(d3.year, d3.month)[1]) datetime.date(2012, 3, 2) >>> import dateutil >>> d3 + dateutil.relativedelta.relativedelta(months=1) datetime.date(2012, 2, 29) 
+1
source

If you are using a datetime date, you can pull the month and add it back.

eg:

 d = datetime.date(2003, 7, 29) d=d.month+1 

Of course, I'm still confused about how the date works if your separator is using ["." ] will be your best choice

+1
source

Source: https://habr.com/ru/post/910281/


All Articles