Intereting Posts
PHP return (value); vs возвращаемое значение; Конфигурация пользовательской загрузки Codeigniter wp_mail возвращает true, но не получает почту Как декодировать строку base64 (gif) в изображение в PHP / HTML SwiftMailer + Gmail – не удается отправить электронную почту Написание запроса в php, который получает информацию из двух разных таблиц MySQL – подсчет общего количества строк в php Как я могу получить сообщения с изображениями из базы данных WordPress, если WordPress больше не установлен? Как использовать AccessDecisionManager в Symfony2 для авторизации произвольных пользователей? Довольно URL для веб-приложения PHP, выводящий числа в экспоненциальной форме Почему я не могу создать триггер с PDO? LendingClub.com API 500 Ошибка при покупке заметок на вторичном рынке Проверьте, находится ли значение внутри строки, которая имеет значения, разделенные запятыми? Как получить скрипт php для печати / работы

конвертировать часовой пояс в другой часовой пояс

Я хочу преобразовать дату, которую я вытащил из базы данных, которая создается через CURRENT_TIMESTAMP и хранится в типе столбца timestamp , от GMT + 8 до GMT + 1.

 $time = "2012-11-07 15:05:26"; // fetch from database $date = new DateTime($time, new DateTimeZone('Europe/Berlin')); echo $date->format('Ymd H:i:s'); 

Однако это даст результат «2012-11-07 15:05:26» , который, я уверен, ошибочен.

Что мне здесь не хватает?

Во-первых, вам нужно создать экземпляр объекта datetime с исходным часовым поясом. Затем, после создания объекта datetime, настройте часовой пояс с помощью DateTime::setTimezone() .

Смотрите этот код, где я использовал Asia/Hong_Kong в качестве примера часовой пояс GMT + 8:

 $time = "2012-11-07 15:05:26"; // fetch from database $date = new DateTime($time,new DateTimeZone('Asia/Hong_Kong')); $date->setTimezone(new DateTimeZone('Europe/Berlin')); echo $date->format('Ymd H:i:s'); // yields 2012-11-07 08:05:26 

Если все исходные даты всегда обозначаются как GMT + 8, и ваше PHP-приложение также настроено на использование GMT ​​+ 8 (например, с date_default_timezone_set() ), нет необходимости передавать начальный объект DateTimeZone , поскольку новый созданные объекты DateTime будут автоматически создаваться с этим часовым поясом.

Может быть, это может помочь. Просто проинтегрируйте его в своем запросе, чтобы упростить кодирование:

 SELECT CONVERT_TZ('2012-11-07 15:05:26','+08:00','+01:00'); 

У вас может быть больше информации о часовых поясах, которые вы хотите использовать. И здесь для большего понимания

Проверь это :

 <?php $time = "2012-11-07 15:05:26"; // fetch from database $tz_object = new DateTimeZone('Europe/Berlin'); $datetime = new DateTime($time); $datetime->setTimezone($tz_object); echo $datetime->format('Ymd H:i:s'); //output 2012-11-07 10:35:26 ?>