To check whether a year is a leap year or not in PHP

In this article, you will learn different ways in PHP to check whether a particular year is a Leap Year or Not.

A leap year has 366 days instead of 365 days because the February is about 29 days rather than the common 28 days. These extra days occur in years which are multiples of four, i.e, 1992, 1996, 2000, 2004, 2008, 2012.

To check whether a year is a leap year or not in php


These are the different ways to find out whether a year is a leap year or not.

Leap Year Program using checkdate() function

The checkdate() function is used to check a valid date in a month and year. It always returns a Boolean value.

Syntax of checkdate() function

bool checkdate(int $month, int $day, int $year);

In the checkdate() function, we have passed '2' in the first parameter, i.e. February month, '29' in the second parameter, i.e. 29 days and the third parameter $year is a variable that accepts year.

<?php
function checkLeapYear($year) {
    return checkdate(2, 29, $year);
}
echo checkLeapYear(2016) ? "2016 is a leap year." : "2016 is not a leap year. ";
echo '<br/>';
echo checkLeapYear(2017) ? "2017 is a leap year." : "2017 is not a leap year. ";
?>

Output of the above code

2016 is a leap year.
2017 is not a leap year.



Using Leap Year Logic

Most of us already know the logic to check for a leap year in a Gregorian calendar. These are the three criteria that must be taken to identify leap years -

  • The year can be evenly divided by 4,
  • If the year can be evenly divided by 100, it is NOT a leap year, unless;
  • The year is also evenly divisible by 400. Then it is a leap year.

The following code implements this logic -

<?php

// function to test if leap year
function checkLeapYr($year) {
 $ret = (($year%400 == 0) || ($year%4 == 0 && $year%100 != 0)) ? true : false;
 return $ret;
}

echo checkLeapYr(2016) ? "2016 is a leap year." : "2016 is not a leap year. ";
echo '<br/>';
echo checkLeapYr(2017) ? "2017 is a leap year." : "2017 is not a leap year. ";
?>

Output of the above code -

2016 is a leap year.
2017 is not a leap year.

Code Explanation

$year%400 == 0 // if evenly divisible by 400, then it is a leap year
$year%4 == 0 && $year%100 != 0 // if evenly divisible by 4 but not by 100, then it is a leap year.




Check Leap Year using date() function

We can also check leap year using the date() function. It has a format "L" which returns 1 if it's a leap year, and 0 if it is not. In the given code, first we check whether the current year is leap year or not and next, we loop over the specified years range and check.

<?php   

// check current year 
echo date('L')?" Leap year" : " Not a leap year";
echo '<br/>';

// check for the specified year range
for($i = 2010; $i < 2020; $i++) {
    echo $i, ': ', (date('L', strtotime("$i-01-01")) ? ' Leap year' : ' Not a leap year'), '
'; } ?>

Output of the above code -

Leap year
2010: Not a leap year
2011: Not a leap year
2012: Leap year
2013: Not a leap year
2014: Not a leap year
2015: Not a leap year
2016: Leap year
2017: Not a leap year
2018: Not a leap year
2019: Not a leap year




Related Articles

Preventing Cross Site Request Forgeries(CSRF) in PHP
PHP code to send email using SMTP
Simple pagination in PHP
Simple PHP File Cache
PHP Connection and File Handling on FTP Server
CRUD operations in Python using MYSQL Connector
Windows commands to Create and Run first Django app
How to send emojis in email subject and body using PHP
PHP7.3 New Features, Functions and Deprecated Functions
Create pie chart using google api
How to display PDF file in PHP from database
How to read CSV file in PHP and store in MySQL
Create And Download Word Document in PHP
PHP SplFileObject Standard Library
Simple File Upload Script in PHP
Sending form data to an email using PHP







Read more articles


General Knowledge



Learn Popular Language