30 likes | 99 Views
This code calculates the year using days from Jan 1, 1980, adjusting for leap years. The bug causes an error in calculating on Dec 31, 2008. To fix it, adjust leap year handling for a correct result.
E N D
What does this code do? year = ORIGINYEAR; while (days > 365) { if (IsLeapYear(year)) { if (days > 366) { days -= 366; year += 1; } } else { days -= 365; year += 1; } } Note: ORIGINYEARis1980 and days = number of days since Jan 1, 1980
What did this code do on December 31, 2008? year = ORIGINYEAR; while (days > 365) { if (IsLeapYear(year)) { if (days > 366) { days -= 366; year += 1; } } else { days -= 365; year += 1; } }
How can you fix it? year = ORIGINYEAR; while (days > 365) { if (IsLeapYear(year)) { if (days > 366) { days -= 366; year += 1; } } else { days -= 365; year += 1; } }