PHP Смещение временной отметки unix

У меня есть временная метка unix в PHP :

 $timestamp = 1346300336; 

Затем у меня есть смещение для часовых поясов, которые я хочу применить. В принципе, я хочу применить смещение и вернуть новую временную метку unix. Смещение следует за этим форматом и, к сожалению, не может быть изменено из-за совместимости с другим кодом:

 $offset_example_1 = "-07:00"; $offset_example_2 = "+00:00"; $offset_example_3 = "+07:00"; 

Я пытался:

 $new_timestamp = strtotime($timestamp . " " . $offset_example_1); 

Но это не работает к сожалению 🙁 Любые другие идеи?

РЕДАКТИРОВАТЬ

После тестирования я очень удивился, но даже это не работает:

 strtotime("1346300336 -7 hours") 

Возвращает false.

Давайте подходим к этому немного по-другому, как лучше всего преобразовать смещенные примеры выше, в секундах? Тогда я могу просто просто сделать $timestamp + $timezone_offset_seconds .

Вы должны передать исходную strtotime метку в качестве второго параметра strtotime .

 $new_timestamp = strtotime("-7 hours", $timestamp); 
  $dt = new DateTime(); $dt->setTimezone('GMT'); //Or whatever $dt->setTimestamp($timestamp); $dt->setTimezone('Pacific'); //Echo out/do whatever $dt->setTimezone('GMT'); 

Мне нравится класс DateTime .

Вы можете использовать DateInterval:

 $t = 1346300336; $date = DateTime::createFromFormat('Ym-d', date('Ym-d', $t)); $interval = DateInterval::createFromDateString('-7 hours'); $date->add($interval); echo $date->getTimestamp(); echo $date->format('Ymd H:i:s'); - $t = 1346300336; $date = DateTime::createFromFormat('Ym-d', date('Ym-d', $t)); $interval = DateInterval::createFromDateString('-7 hours'); $date->add($interval); echo $date->getTimestamp(); echo $date->format('Ymd H:i:s');