This is a mistake . ( credit )
To work around this, change the time zone to UTC, and then again.
$d = new DateTime('2015-11-01 12:00:00 AM', new DateTimeZone('America/Vancouver')); $tz = getTimezone(); $d->setTimezone(new DateTimeZone('UTC')); $d->modify('+1 hour'); $d->modify('+1 hour'); $d->modify('+1 hour'); $d->setTimezone($tz); echo $d->format('dMY g:ia');
source share