Проблема с PHP юзербаром ( функции GB)

fixxxer

К.О.
Партнер клуба
>хотя, при этом высокостные года будут некорректно учитываться, пожалуй
[m]strtotime[/m]("-1 month") etc
 

x-yuri

Новичок
fixxxer не знаю, имхо учитывать високосные года надо по-другому и strtotime не поможет или я туплю. А можно код?

-~{}~ 31.12.08 12:46:

если бы действительно надо было учитывать високосные года, я бы сделал так
PHP:
<?php 
function date_diff( $till, $since, &$d, &$m, &$y ) {

	date_diff_remainder( $since, $d1, $m1, $y1, $d1_sec, $m1_sec, $y1_month );
	date_diff_remainder( $till, $d2, $m2, $y2, $d2_sec, $m2_sec, $y2_month );

	$d = $d2 - $d1;
	if( $d1_sec > $d2_sec )
		$d--;

	$m = $m2 - $m1;
	if( $m1_sec > $m2_sec )
		$m--;

	$y = $y2 - $y1;
	if(
        ($y1_month > $y2_month) ||
        ($y1_month == $y2_month) &&
            ($m1_sec > $m2_sec) )
                $y--;
}

function date_diff_remainder( $date, 
                              &$d, &$m, &$y, &$d_sec, &$m_sec, &$y_month ) {

	$y_date = strftime( '%Y', $date );
	$m_date = strftime( '%m', $date );
	$d_date = strftime( '%d', $date );

	$d_sec = $date - mktime(0, 0, 0, $m_date, $d_date, $y_date);
	$m_sec = $date - mktime(0, 0, 0, $m_date, 1, $y_date);
	$y_month = $m_date-1;

	$d = floor( $date / 60/60/24 );
    $y = $y_date - 1970; 
    $m = $y_month + $y*12;
}

date_diff( strtotime('2008-02-07 03:17:32'), strtotime('2008-01-07 03:17:33'), $d, $m, $y );
echo "$d\n";
echo "$m\n";
echo "$y\n"; ?>
только я толком не проверял, вполне вероятны ошибки
 
Сверху