- date_default_timezone_set: documentation ( source)
<?php
date_default_timezone_set('Europe/Berlin');
// birthdate format is YYYY-MM-DD
$birth = new DateTime('1966-01-21');
$today = new DateTime('21-01-2011');
$diff = $birth->diff($today);
echo $diff->format('%y') . PHP_EOL; // will output 45
$birth = new DateTime('1966-01-23');
$today = new DateTime('21-01-2011');
$diff = $birth->diff($today);
echo $diff->format('%y') . PHP_EOL; // will output 45 wrongly
$birth = new DateTime('1966-01-24'); // three days difference!
$today = new DateTime('21-01-2011');
$diff = $birth->diff($today);
echo $diff->format('%y') . PHP_EOL; // will output 44 - correct
?>