Какие инструменты даты и времени php использовать для смещения GMT
Вопрос
Похоже, что существует много способов приблизиться к массированию даты и времени в php.Обычно я каждый раз имею дело только с местным временем.Сегодня мне нужно работать в UTC.
Я делаю запрос к API, данные, которые они предоставляют мне о произвольной записи, являются:созданный:Чт, 18 июня 2009 21:44:49 +0000 * Задокументировано как "время создания записи UTC"
utc_offset:-28800 * Разница между пользователями re
Мне нужно преобразовать это в простую строку, чтобы показать пользователю, в какое время и дату были отправлены данные по его местному времени.
Я полагаю, вышесказанное переводится как, если в Калифорнии.например:Четверг, 18 июня 2009, 02:44:49 вечера
Моя цель - получить значение времени, которое я могу передать в date() для удобства форматирования в "красивом" формате.
Действительно ли это так просто, как преобразовать созданное выше время в секунды из эпохи, добавить смещение, а затем передать это в date ()?Есть на кого обратить внимание?
$created_time = 'Thu, 18 Jun 2009 21:44:49 +0000';
$utc_offset = -28800;
$seconds = strtotime($created_time);
$localized_time = $seconds + $utc_offset;
echo date(DATE_RFC822, $localized_time);
Спасибо
Решение
PHP должен делать это автоматически за вас.Я также могу НАСТОЯТЕЛЬНО рекомендовать использовать вместо этого объект DateTime .
$dt = новая дата-время($created_time);echo $dt->формат (DATE_RFC2822);
Функции даты и времени PHP учитывают часовой пояс..Убедитесь, что вы используете последнюю версию PHP, потому что было проделано много работы по улучшению этих систем.
Другие советы
Вы можете использовать date_default_timezone_set дата по умолчанию : timezone_set для переключения между часовыми поясами.В вашем случае вы бы передали информацию о часовом поясе из профиля пользователя.Как рекомендовал Evert, если вы используете PHP 5>= 5.2, пожалуйста, используйте более продвинутый Дата - время класс.
<?php
echo date('h:i:s')."\n";
date_default_timezone_set('Europe/Paris');
echo date('h:i:s')."\n";
date_Default_timezone_set('UTC');
echo date('h:i:s')."\n";