Checking For Leap Year Using PHP

By  on  

One part of programming that seems pretty static is dealing with dates. The calendar is a set system of rules that doesn't look to change. The only part of the calendar that can be variable is a leap year, which changes every four years (obviously).

Using pure PHP ternary logic, much like the PHP Function - Calculating Days In A Month, I posted a few weeks back, you can check to see if a year is a leap year.

The Code

function is_leap_year($year) {
	return ((($year % 4) == 0) && ((($year % 100) != 0) || (($year % 400) == 0)));
}

Recent Features

  • By
    5 Awesome New Mozilla Technologies You’ve Never Heard Of

    My trip to Mozilla Summit 2013 was incredible.  I've spent so much time focusing on my project that I had lost sight of all of the great work Mozillians were putting out.  MozSummit provided the perfect reminder of how brilliant my colleagues are and how much...

  • By
    Creating Scrolling Parallax Effects with CSS

    Introduction For quite a long time now websites with the so called "parallax" effect have been really popular. In case you have not heard of this effect, it basically includes different layers of images that are moving in different directions or with different speed. This leads to a...

Incredible Demos

  • By
    Create Classy Inputs Using MooTools’ OverText

    The MooTools More library is a goldmine. A treasure chest. Pirates booty, if you will (and, of course, I will). More is full of plugins that add a lot of class and functionality to your website with minimal effort.

  • By
    MooTools PulseFade Plugin

    I was recently driven to create a MooTools plugin that would take an element and fade it to a min from a max for a given number of times. Here's the result of my Moo-foolery. The MooTools JavaScript Options of the class include: min: (defaults to .5) the...

Discussion

  1. Placing a function call as an argument default will result in a fatal error. Also, give this version a shot:

    function is_leap_year( $year = NULL )
    {
        if_numeric( $year ) || $year = date( 'Y' );
        return checkdate( 2, 29, ( int ) $year );
    }
  2. Whoops, small typo… if_numeric( $year ) should be is_numeric( $year )… :x

  3. Tamlyn

    Better yet, use date('L') which returns 1 if it’s a leap year, 0 if it isn’t.

  4. I do agree with tamlyn, why you dont use date function??
    It can makes a load fasting right?

  5. Travis

    date(‘L’) is way better because leap year is not every 4 years.

  6. Date("L") only tell you in a given year, default is the year today.
    If you need to know whether previous or next year is a leap, you must reset the date.
    It could affect the system.

    • Indra, you can always pass the timestamp as second parameter to date function:

      echo date('L', mktime(1, 1, 1, 1, 1, 2005));
      
  7. I think this is a better example relating to the function. Also provided example for anyone looking for true/false as I was in this instance.

    /* for true or false */
    function is_leap_year($year)
    {
    	return ( date ('L', mktime(1,1,1,1,1, $year) ) === 1 ) ? true : false;
    }
    /*for 0 or 1 Whether it's a leap year: 1 if it is a leap year, 0 otherwise. */
    function is_leap_year($year)
    {
    	return date ('L', mktime(1,1,1,1,1, $year) );		
    }
    
  8. Habibur Rahaman
    <?php
    $day = "";
    for($i=0; $i<4; $i++)
    {
        $day =  date("d", mktime(0, 0, 0, 2, 29, date("Y")+$i));
        if($day == 29)
        {
            $year = date("Y")+$i;
            break;
        }
    }
    echo "The next leap year is 29th February $year";    
    ?>
    
    
  9. Milan Dvořák

    code of Habibur Rahaman will not work for example for the year 1897, because 1900 is not leap year.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!