Задать вопрос

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

Делаю вот так
$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.

Подскажите, как лучше это сделать?
  • Вопрос задан
  • 67 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 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);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы