Как сменить время с учетом часового пояса?

Делаю вот так
$time='2016-05-26 18:06:08';
$date = new DateTime($time, new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d H:i:sP');


Результат 2016-05-26 18:06:08-04:00

В результате мы видим такую же дату, только в конце минус 4 часа.
Как правильно отнять этих 4 часа? Можно конечно пеевести эту дату в секунды и отнять 60*60*4, но мне кажется, что можно это сделать методами класса DateTime.

Подскажите, как лучше это сделать?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
kowap
@kowap Автор вопроса
Сделал как-то так. Сойдет
$date='2016-05-26 18:06:08';

//переводим в секунды
$time=strtotime($date);
$zone=new DateTime($date, new DateTimeZone('America/New_York'));

// Смещение временной зоны в секундах.
$dif=$zone->format('Z');


if($dif < 0){
    $date=$time+$dif;
}
if($dif > 0){
    $date=$time-$dif;
}

echo date('Y-m-d H:i:s',$date);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы