Вам нужно будет изменить часовой пояс для любых извлекаемых вами дат, которые являются серверным временем, вы не можете изменить часовой пояс по умолчанию (в любом случае, см. Процедурный подход, который изменяет его и устанавливает его снова) , Есть 3 варианта, описанных ниже.
Я бы рекомендовал использовать объект DateTIme, так как он предлагает максимальную простоту и гибкость.
Использование DateTime Объект
Вы не должны ничего делать при создании DateTime, поэтому он создает его с часовым поясом сервера, но тогда вам нужно вызвать setTimezone .
Вот пример:
// Could just call this once, and use a reference to it.
$timezone = new DateTimeZone('GMT');
$insertDate = new DateTime($row['insertDate']);
$insertDate->setTimezone($timezone);
Теперь $insertDate
будет в часовом поясе GMT, преобразованном из часового пояса вашего сервера.
Использование процедурных Функции даты / времени
Если вы хотите использовать процедурные функции, в вашем случае вы можете использовать gmdate или если вам нужен другой часовой пояс, отличный от GMT, вам придется постоянно менять часовой пояс по умолчанию, используя date_default_timezone_set
// Storing so you can restore the current default
$serverTimezone = date_default_timezone_get();
/**
* Get the unix timestamp for the insertDate
* This converts from the default timezone to UTC
*/
$insertDate = strtotime($row['insertDate']);
date_default_timezone_set('GMT');
/**
* This displays the date in the new default timezone GMT, based
* on the UTC timezone of the unix timestamp
*/
echo date('Y-m-d H:i:s', $insertDate);
// Reset the timezone
date_default_timezone_set($serverTimezone);
Это можно абстрагировать в свою собственную функцию, чтобы избавить вас от хлопот.
Использование gmdate - работает только для GMT
Концепция, аналогичная процедурному примеру, показанному выше, за исключением того, что нам не нужно играть с часовым поясом по умолчанию.
/**
* Get the unix timestamp for the insertDate
* This converts from the default timezone to UTC
*/
$insertDate = strtotime($row['insertDate']);
/**
* This displays the date in GMT, based
* on the UTC timezone of the unix timestamp
*/
echo gmdate('Y-m-d H:i:s', $insertDate);