콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
9 답글
104628 화면

I have the need to find the number of months between two dates in python. Is there any standard python method to do that ?

아바타
취소

Can yo be more specific? How many months should be between april 30 and may 1st of the same year? And what about 1-st and last day of a specific month. And what about 15 of month x and 14 of month x+1?

베스트 답변

You can try this:

from datetime import datetime
from dateutil import relativedelta
date1 = datetime.strptime(str('2011-08-15 12:00:00'), '%Y-%m-%d %H:%M:%S')
date2 = datetime.strptime(str('2012-02-15'), '%Y-%m-%d')
r = relativedelta.relativedelta(date2, date1)
r.months

This will give you number of months between two dates.

Thanks, Priyesh Solanki

아바타
취소
베스트 답변

for example:

from datetime import datetime
def days_between(d1, d2):
    d1 = datetime.strptime(d1, "%Y-%m-%d")
    d2 = datetime.strptime(d2, "%Y-%m-%d") 
    return abs((d2 - d1).days)

print days_between('2013-05-06', '2013-06-06')
아바타
취소
작성자

Thank you for your answer, but I need to calculate number of month. The division by 30 doesn't give an exact result.

If you want the number of months you should use dateutil.relativedelta, as in Priyesh's answer. The reason for that is because it hides all the complex calculations required for different lengths of months, leap years, etc.

If I have inputs fields like date_from and date_to in pay slip calculation and i have to find the number of days between them . How can i use that ?? Can i use some variable of that kind in python code.?? Above code will work there??

I would like to refresh a bit this subject. Guys, how ... i tried Priyesh's answer but because I'm trying to provide date's from inputs ... it gives me an error: date1 = datetime.strptime(str('st_date'), '%Y-%m-%d %H:%M:%S') File "/usr/lib/python2.7/_strptime.py", line 325, in _strptime (data_string, format)) ValueError: time data 'st_date' does not match format '%Y-%m-%d %H:%M:%S' What to do with it ?

or this: date1 = datetime.strptime(str(st_date), '%Y-%m-%d %H:%M:%S') NameError: name 'st_date' is not defined 2015-12-21 21:48:00,534 3121 WARNING mydatabase openerp.sql_db: Cursor not closed explicitly Please enable sql debugging to trace the caller.

베스트 답변

Hello Saad,

Try to use below link.

https://stackoverflow.com/questions/4039879/best-way-to-find-the-months-between-two-dates

Hope it help you.

Best Thanks,

Ankit H Gandhi.

아바타
취소
관련 게시물 답글 화면 활동
1
11월 23
1599
3
10월 23
5709
2
1월 23
5007
2
9월 21
3091
Datetime in python 해결 완료
7
6월 21
24343