[PHP-users 31825] Re: 1970年以前の指定日から現在まで何日経過しているか確認する方法
takay
takay.ml @ gmail.com
2007年 4月 5日 (木) 10:02:33 JST
takayです。
単純に計算してみるというのはどうでしょう。
検証してないですが、こんな感じ?
function days($ymd, $sep) {
$md = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
$buf = explode($sep, $ymd);
$buf[0] += 0;
$buf[1] += 0;
$buf[2] += 0;
if ( !checkdate($buf[1], $buf[2], $buf[0]) ) return false;
$days = $buf[0] * 365;
$uru = 0;
if ( $buf[0] % 4 ) { /* 4年に1度はうるう年 */
$uru = 1;
if ( $buf[0] % 100 ) { /* 100年に1度は平年 */
$uru = 0;
if ( $buf[0] % 400 ) { /* 400年に1度はうるう年 */
$uru = 1;
}
}
}
$days += $uru;
for ( $i = ($buf[1] - 2) ; $i >= 0 ; $i-- ) $days += $md[$i];
$days += $buf[2];
return $days;
}
echo (days("2007-04-05", '-') - days("1600-01-01", '-')) . "\n";
紀元前でなければ計算できます。
---
takay.ml @ gmail.com
PHP-users メーリングリストの案内