Не использовать date_default_timezone_set('UTC');
, поскольку MySQL сервер будет использовать часовой пояс сервера, а не UT C,
Например,
Часовой пояс вашего сервера - GMT + 2
И вы устанавливаете часовой пояс вашего сервера на GMT +0;
Затем вы читаете свою дату в базе данных, которая хранится в часовом поясе GMT + 2
Когда вы пытаетесь преобразовать его в другой часовой пояс, например, GMT + 5,
Это сместит 7 часов, а не 5 часов