File Exchange

image thumbnail


version (1.36 KB) by Isaac Mancero Mosquera
This file test if a given year is a normal year or a leap year.

1 Download

Updated 15 Jun 2011

View Version History

View License

A script to assess if a given year (in the Gregorian Calendar system) is a leap year or not.

It returns 0 if is not a leap year,
it returns 1 if it is a leap year.


>> isleap(1900)

ans =


>> A = [1200 1538 2001 ; 816 1900 1908 ; 2000 2004 2011]

A =

1200 1538 2001
816 1900 1908
2000 2004 2011

>> isleap(A)

ans =

1 0 0
1 0 1
1 1 0

It looks at the remainder of the division, if the year is divisible by 4, 100 and 400 and makes the decision according to it. (For a year ending in 00 is not a leap year unless is divisible for 400 too).

Cite As

Isaac Mancero Mosquera (2021). isleap.m (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (3)

And sorry I'm freely using the word "script", my shame, I'll try to correct that soon.

To Jan Simon: You are right. I've deleted that unnecessary line. I made the error during the testing stage when it was still not written as a function.

On a different note, I couldn't find that other script you mentioned before, and I was actually needing one. Indeed, I decided to write this script because of that.

To all Users: this is a simple script, it's not checking if you are entering a complex, a real or a transfinite number. OTOH no citation is needed if you use this file.


There is absolutely no reason to clear "mod" inside a function. Please read the documentation about the difference between "scripts" and "functions".
You can simplify the algorithm: ~mod(Ym 4) & (mod(Y, 100) | ~mod(Y, 400))
An older submission, which checks the inputs also:

MATLAB Release Compatibility
Created with R14SP3
Compatible with any release
Platform Compatibility
Windows macOS Linux
Tags Add Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!