[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 メーリングリストの案内