classification
Title: Calendar.leapdays(y1,y2) bug
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 2.7
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: inglesp, larry, sbanjac
Priority: normal Keywords:

Created on 2012-09-28 10:11 by sbanjac, last changed 2012-09-28 10:56 by larry. This issue is now closed.

Messages (3)
msg171427 - (view) Author: Sasa Banjac (sbanjac) Date: 2012-09-28 10:11
Hello!
I am using the calendar.leapdays(y1,y2) function. It should return the number of leap years betwwen y1 and y2 (exclusive). However the function still cant process mutliple centuries.
Example: between 1900 and 2000 we have 24 leap years:
1904,08,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96
leapdays(1900,2000) returns 24 -> OK
however
leapdays(1899,2000) returns also 24 NOT OK
leapdays(1899,2001) returns 25 NOT OK
leapdays(1900,2001) returns 25 OK

This means that the function has a problem with the lower boundary
If I try to calculate the number of leap days in a larger interval of years, the error is considerable:
leapdays(1,2001) returns 485
But 485 * 4 = 1940
msg171433 - (view) Author: Peter Inglesby (inglesp) * Date: 2012-09-28 10:50
This behaviour is correct.  Years divisible by 4 are leap years, except years divisible by 100, except years divisible 400.

Source http://en.wikipedia.org/wiki/Leap_year.
msg171436 - (view) Author: Larry Hastings (larry) * (Python committer) Date: 2012-09-28 10:56
Agreed.  Not a bug.  Closing the issue.
History
Date User Action Args
2012-09-28 10:56:31larrysetstatus: open -> closed
type: behavior
messages: + msg171436

resolution: not a bug
stage: resolved
2012-09-28 10:55:31inglespsetnosy: + larry
2012-09-28 10:50:55inglespsetnosy: + inglesp
messages: + msg171433
2012-09-28 10:11:15sbanjaccreate