When using DateTime::add() be careful that additions over Summertime changes will not always produce the expected results. For instance, adding a day (interval = P1D) is probably expected to keep the same time when added to a date even over a summertime change. But adding 24 hours (interval = PT24H) does not seem to take into effect the time change.
When then checking the time difference after adding 24 hours after the clocks went forward, the time difference is only 23 hours.
<?php
date_default_timezone_set('Europe/London');
$diff1Day = new DateInterval('P1D');
$diff24Hours = new DateInterval('PT24H');
$diff1440Minutes = new DateInterval('PT1440M');
// Clocks changed at 2014-03-30 02:00:00
$d0 = new DateTime('2014-03-29 08:00:00');
$d1 = new DateTime('2014-03-29 08:00:00');
// Add 1 day - expect time to remain at 08:00
$d1->add($diff1Day);
print_r($d1);
$d2 = new DateTime('2014-03-29 08:00:00');
// Add 24 hours - expect time to be 09:00
$d2->add($diff24Hours);
print_r($d2);
$seconds = $d1->getTimestamp() - $d0->getTimestamp();
echo "Difference in Hours: " . $seconds / (60 * 60) . "\n";