In Java how to find if Year is a Leap Year or not? Custom logic and Gregorian Calendar

Last updated
App Shah

Crunchify » Java and J2EE Tutorials » In Java how to find if Year is a Leap Year or not? Custom logic and Gregorian Calendar

In Java how to find if Year is Leap Year or not?

What is a Leap Year?

Leap year is a year, occurring once every four years, that has 366 days including February 29 as an intercalary day.

  • Is the year divisible by 4? If no – it’s not a leap year
    • If yes – Is the year divisible by 100? If no – it’s a leap year
      • If yes – Is the year divisible by 400? If no – it’s not a leap year
        • If yes – it’s a leap year

In this tutorial we will implement this logic and find out year is a Leap year or not?

Leap Year Logic

Let’s get started:

Create class CrunchifyFindLeapYear.java. Just copy and paste below code.

Here there are two different ways we will check if year is a leap year or not?

  1. Custom method
  2. Using GregorianCalendar method
package crunchify.com.java.tutorials;

import java.util.GregorianCalendar;

/**
 * @author crunchify.com
 * Program: In Java how to find if Year is Leap Year or not?
 * Two different methods.
 */

public class CrunchifyFindLeapYear {
    public static void main(String[] args) {

        CrunchifyFindLeapYear crunchifyInstance = new CrunchifyFindLeapYear();

        crunchifyLog("Is it a leap year?: " + crunchifyInstance.isLeapYear(createRandomIntBetween(1900, 2021)));
        crunchifyLog("Is it a leap year?: " + crunchifyInstance.isLeapYear(createRandomIntBetween(1900, 2021)));
        crunchifyLog("Is it a leap year?: " + crunchifyInstance.isLeapYear(createRandomIntBetween(1900, 2021)));
        crunchifyLog("Is it a leap year?: " + crunchifyInstance.isLeapYear(createRandomIntBetween(1900, 2021)));
        crunchifyLog("Is it a leap year?: " + crunchifyInstance.isLeapYearUsingGregorianCalendar(createRandomIntBetween(1900, 2021)));
        crunchifyLog("Is it a leap year?: " + crunchifyInstance.isLeapYearUsingGregorianCalendar(createRandomIntBetween(1900, 2021)));
        crunchifyLog("Is it a leap year?: " + crunchifyInstance.isLeapYearUsingGregorianCalendar(createRandomIntBetween(1900, 2021)));
        crunchifyLog("Is it a leap year?: " + crunchifyInstance.isLeapYearUsingGregorianCalendar(createRandomIntBetween(1900, 2021)));

    }

    // Simple Crunchify Print Utility
    private static void crunchifyLog(String s) {
        System.out.println(s);
    }

    // Generate Random Year between 1900 and 2021
    public static int createRandomIntBetween(int start, int end) {
        int year = start + (int) Math.round(Math.random() * (end - start));
        crunchifyLog("\n==> " + year + "");
        return year;
    }

    // Method-1: Logic to find out if Year is a Leap year or not?
    public boolean isLeapYear(int year) {

        return (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0));
    }

    // Method-2: Logic to find out if Year is a Leap year or not using GregorianCalendar.
    public boolean isLeapYearUsingGregorianCalendar(int year) {

        // GregorianCalendar is a concrete subclass of Calendar and provides the standard calendar system used by most of the world.
        // GregorianCalendar is a hybrid calendar that supports both the Julian and Gregorian calendar systems with the support of a single discontinuity,
        // which corresponds by default to the Gregorian date when the Gregorian calendar was instituted (October 15, 1582 in some countries, later in others).
        // The cutover date may be changed by the caller by calling setGregorianChange().
        GregorianCalendar crunchifyDates = (
                GregorianCalendar) GregorianCalendar.getInstance();

        // isLeapYear(): Determines if the given year is a leap year. Returns true if the given year is a leap year.
        // To specify BC year numbers, 1 - year number must be given. For example, year BC 4 is specified as -3.
        return crunchifyDates.isLeapYear(year);
    }
}

IntelliJ IDEA Result:

Just run above program as Java Application and you will see result as below.

==> 2015
Is it a leap year : false

==> 1936
Is it a leap year : true

==> 1992
Is it a leap year : true

==> 1960
Is it a leap year : true

==> 1949
Is it a leap year : false

==> 1969
Is it a leap year : false

==> 1924
Is it a leap year : true

==> 1926
Is it a leap year : false

Process finished with exit code 0

Let me know if you face any issue running above program.

Leave a Comment