Checking For Leap Year Using PHP
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)));
}
![LightFace: Facebook Lightbox for MooTools]()
One of the web components I've always loved has been Facebook's modal dialog. This "lightbox" isn't like others: no dark overlay, no obnoxious animating to size, and it doesn't try to do "too much." With Facebook's dialog in mind, I've created LightFace: a Facebook lightbox...
![Create Spinning Rays with CSS3: Revisited]()
![Scroll IFRAMEs on iOS]()
For the longest time, developers were frustrated by elements with overflow not being scrollable within the page of iOS Safari. For my blog it was particularly frustrating because I display my demos in sandboxed IFRAMEs on top of the article itself, so as to not affect my site's...
![Create Your Own Dijit CSS Theme with LESS CSS]()
The Dojo Toolkit seems to just get better and better. One of the new additions in Dojo 1.6 was the use of LESS CSS to create Dijit themes. The move to using LESS is a brilliant one because it makes creating your own Dijit theme...
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 ); }Whoops, small typo… if_numeric( $year ) should be is_numeric( $year )… :x
Better yet, use
date('L')which returns1if it’s a leap year,0if it isn’t.I do agree with tamlyn, why you dont use date function??
It can makes a load fasting right?
date(‘L’) is way better because leap year is not every 4 years.
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));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) ); }<?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"; ?>code of Habibur Rahaman will not work for example for the year 1897, because 1900 is not leap year.