Please look at the gmstrftime():
<?php
$offset = 2;
$timestamp = time() + ( $offset * 60 * 60 );
echo gmstrftime("%b %d %Y %H:%M:%S", $timestamp) . "\n";
?>
This function formats time against GMT, so you can directly use time zone offsets.
PHP Manual here - http://php.net/manual/en/function.gmstrftime.php
But a more elegant solution could be to use DateTime::setTimezone():
<?php
// From PHP manual
$date = new DateTime('2000-01-01', new DateTimeZone('Pacific/Nauru'));
echo $date->format('Y-m-d H:i:sP') . "\n";
$date->setTimezone(new DateTimeZone('Pacific/Chatham'));
echo $date->format('Y-m-d H:i:sP') . "\n";
?>