Я хочу получить ФРАНЦУЗСКУЮ ДАТУ GMT по метке времени Unix.
В моей базе данных я сохранил дату в GMT + 0, затем я получил метку времени этой даты и хочу отобразить дату с хорошим GMT + 2
Моя отметка времени: 1461857633 из базы данных и равна: 29/04/2016 12:27:11
И теперь я хочу отобразить эту дату с местным GMT.
Итак, я сделал это:
$timestamp = 1461857633;
$format = 'd/m/Y H:i:s';
$res = date($format, $timestamp);
echo $res;
и у меня та же дата 29/04/2016 12:27:11 где мой часовой пояс хорошо «Европа / Париж»
Обычно я должен иметь эту дату: 29/04/2016 14:27:11
$ timestamp = 1461857633;
$ffectiveDate = strtotime («+ 120 минут», $ timestamp);
$ format = ‘d / m / Y H: i: s’;
$ res = дата ($ формат, $ffectiveDate);
echo $ res;
Вы можете просто добавить 2 часа к отметке времени или создать объект DateTime и изменить его, добавив к нему 2 часа:
$timestamp = 1461857633 + 2 * 60 * 60;
или же
$dateTime = new DateTime();
$dateTime->setTimestamp(1461857633)->modify('+2 hours');
echo $dateTime->format('d/m/Y H:i:s');
или, другим решением было бы рассчитать секунды между часовым поясом, в который вы хотите конвертировать, и часовым поясом Гринвича (который GMT + 0), например:
$greenwichTimeZone = new DateTimeZone('Greenwich Mean Time');
$parisTimeZone = new DateTimeZone('Europe/Paris');
$dateTimeGreenwich = new DateTime('now', $greenwichTimeZone);
$seconds = $parisTimeZone->getOffset($dateTimeGreenwich);
$dateTime = new DateTime();
$dateTime->setTimestamp(1461857633 + $seconds);
echo $dateTime->format('d/m/Y H:i:s');
date_default_timezone_set("UTC");
$HUTC = date("h");
date_default_timezone_set("Europe/Paris");
$HParis = date("h");
$diff = $HParis - $HUTC;
$timestamp = 1461857633;
$timestamp = 1461857633 + $diff * 60 * 60;
$format = 'd/m/Y H:i:s';
$res = date($format,$timestamp);
echo $res;
Это будет работать как летом, так и зимой