#ayin gunleri daysOfMonths = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] #fevralin 29undan olub olmadigini yoxlayir def isLeap(year): if (year % 4) != 0: return False elif (year % 100) != 0: return True elif (year % 400) != 0: return False else: return True #ilin aylarinin gunlerinin cemini hesablayir.. init_year fevralin 29 yoxsa 28 gun oldugunu tapmaq ucundu #init month hansi aydan baslayir hesablamaga. #month_in_this_year hansi aya kimi hesablasin def monthWhile(init_year, init_month, month_in_this_year): days = 0 while init_month <= month_in_this_year: #burani ozun bildin if isLeap(init_year): #bu il fevral 29dan di? if (init_month-1) == 1: ## fevral ayidi? days += 1 ### fevral ayidisa gunlerin ustune elave 1 gel cunki daysOfMonths listinde fevral 28 di days += daysOfMonths[init_month-1] ## buda gunlerin ustune daysOfMonths listinden aydaki gunlerin cemini goturur init_month += 1 ## novbeti aya kecirik fevral idise marta :D return days ## vopsim baslangic aydan deyilen aya kimi gunleri hesabladiq gonderirik.. def daysBetweenDates(year1, month1, day1, year2, month2, day2): days = 0 ### umumi gunler init_year = year1 ##baslangic il.. while icinde +1 edirem deye init_year variablena assign elemisem init_month = month1 ## birinci tarixin ayi. monthWhile() funksiyasinda birinci burdan baslayiriq sonra +1 ede ede gedirik month_in_this_year = 12 ## buda 1 ilde 12 ayin oldugunu gosterir.. :D subtract = 0 ## hesabladigimiz gunlerden axirda lazim olmayan gunleri cixacayiq. cunki gunleri ayin 1 inden hesablayiram. 25-12-2011 tarixinde men gunu 25 den yox 1 inden hesablayiram axirda cixacam if year1 != year2: ## eger iller eyni deyilse while init_year <= year2: ## baslangic ilden baslayiriq axirinci verilen ile kimi gedirik 2010-2011-2012 days += monthWhile(init_year, init_month, month_in_this_year) ## baslangic ili ( fevralin 29u sohbeti ucun) , init_month (hansi aydan baslayiriq), month_in_this_year (iller ferqli olduguna gore gelen ile kecmek ucun bu ilin verilen ayindan axirinci ayina kimi gunleri hesablayiriq) init_year += 1 #12ci aya kimi hesabladiq kecirik novbeti ile init_month = 1 ## novbeti ilde yanvardan baslayiriq if init_year == year2: ## eger novbeti il axirinci verilen ile beraberdise month_in_this_year = month2 ## gunleri 12ci aya kimi yox verilen aya kimi hesablayiriq else: ## eger iller ferqli deyilse if month1 != month2: ## eger aylar ferqlidise days += monthWhile(init_year, init_month, month2) ## init_year - iller eynidi ona gore 1ci tarixdeki ilide vere bilerik 2ci tarixdeki ilide. fevralin 29una baxmaq ucun. ## init_month - birinci ay, month2 - ikinci ay else: #eger aylar da eynidise days += daysOfMonths[month1-1] ## verilen ayin butun gunlerini days variablena veririk.. if isLeap(year1) and (month1-1) == 1: ## eger birinci ilin fevral ayi 29dandisa ve birinci ay fevraldisa subtract += 29 - (29 - day1) ### bura komment yazanda gordum ki dehset gijdemisem :D 29-29? Wtf? vopsim hesablamaga ayin 1inden baslamisam deye tarix fevralin 25i verilibse demeli 25 artiqdi. else: ## fevral 29dan deyilse subtract += daysOfMonths[month1-1] - (daysOfMonths[month1-1] - day1) ## eyni gijdiyi burdada elemisem :D if isLeap(year2) and (month2-1) == 1: ## eger birinci ilin fevral ayi 29dandisa ve birinci ay fevraldisa subtract += 29 - day2 ## fevralin 25i verilibse 29-25 = 4 artigdi else: subtract += daysOfMonths[month2-1] - day2 ## eyni sey adi aylarcun days = days - subtract ## days`den artig gunleri cixiriq return days ##vso # Test funksiyasi def test(): test_cases = [((2012,1,1,2012,1,28), 27), ((2012,1,1,2012,2,28), 58), ((2012,1,1,2012,3,1), 60), ((2011,6,30,2012,6,30), 366), ((2011,1,1,2012,8,8), 585 ), ((1900,1,1,1999,12,31), 36523)] for (args, answer) in test_cases: result = daysBetweenDates(*args) if result != answer: print "Test with data:", args, "failed" else: print "Test case passed!" test()
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question