PHPでのうるう年判定
日付を扱うときにぶつかるのがうるう年。
PHPではいくつか判定のしかたがあるみたいなのでそれのメモ。
1. 自力で判定式を書いてみる方式
まずうるう年の定義。
wikipediaによると
とのこと。
これを考慮して関数を考えてみます。
function isLeapYear ( $year ) { if( ( $year % 4 == 0 && $year % 100 != 0 ) || $year % 400 == 0 ) { return true; } else { return false; } }
このまま他の言語でも使えそう。
2. DateTimeクラスを使う方式
PHP5 閏年(うるう年)か調べる DateTime::format('L') checkdate
http://atamoco.boy.jp/php5/datetime/isleap.php
を参考に。
function isLeapYear ( $year ) { $date = new DateTime( $year . '-1-1' ); $leap = $date -> format( 'L' ); if( $leap ) { return true; } else { return false; } }
JavaScriptのDateクラスに近い感じ?うるう年判定以外にもやることがあるのならこれかな。
3. checkdate関数を使う方式
その年の2月29日は存在しているかどうかを判定。
function isLeapYear ( $year ) { if( checkdate( 2, 29, $year ) ) { return true; } else { return false; } }
単純にうるう年かどうかを調べるだけならこれが一番スマートな気がします。