When A Leap Year Really Isn't

In a previous blog entry, 3. Are You Odd?, I referred to determining a leap year still being a manual programming process in many cases. There are certainly umpteen library functions out there to do it, but it's simple to do and a nice programming exercise for function writing.

How does one determine if a given year is a leap year? It's a common belief that if the year is evenly divisible by 4, that it is a leap year. That is true most of the time, but not always.

The rule for determining a leap year is this:

A Year is a Leap Year ...

  • Rule 1 - it is evenly divisible by 4
  • Rule 2 - Rule 1 is true only if the year is not evenly divisible by 100
  • Rule 3 - Rule 2 is true only if the year is not evenly divisible by 400

So that:

2004 is a leap year (Rule 1)
1900 would seem to be a leap year (Rule 1), but is not a leap year (Rule 2)
2000 would not seem to be a leap year (Rule 2), but is a leap year (Rule 3)

With the rules laid out, here then is a PHP function to test for a leap year

Of course, the Drupal Community isn't the only place to give back. It's a complex world, and there are as many worthy causes as their are melodies, with most being served by multiple charitable organizations. Here are a few of those that strike a 7th chord with me.