Какие инструменты даты и времени php использовать для смещения по Гринвичу - PullRequest
0 голосов
/ 19 июня 2009

Похоже, есть много способов приблизиться к дате и времени, массируя в php. Я обычно занимаюсь только местным временем. Сегодня мне нужно работать в UTC.

Я запрашиваю API, данные о произвольной записи, которые они мне дают, таковы: создано: четверг, 18 июня 2009 21:44:49 +0000 * Задокументировано как «время создания UTC-записи»

utc_offset: -28800 * Разница между пользователями ре

Мне нужно преобразовать это в простую строку, чтобы показать пользователю, в какое время и дату были отправлены данные по местному времени.

Полагаю, вышеприведенное означает, например, в Калифорнии: Четверг, 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);

Спасибо

Ответы [ 2 ]

2 голосов
/ 19 июня 2009

PHP должен делать все автоматически. Я также НАСТОЯТЕЛЬНО рекомендую использовать объект DateTime.

</p> <p>$dt = new DateTime($created_time); echo $dt->format(DATE_RFC2822);</p> <p>

Функции даты и времени в PHP учитывают часовой пояс. Убедитесь, что вы используете последнюю версию PHP, потому что была проделана большая работа по улучшению этих систем.

0 голосов
/ 19 июня 2009

Вы можете использовать date_default_timezone_set для переключения между часовыми поясами. В вашем случае вы передадите информацию о часовом поясе из профиля пользователя. Как рекомендует Evert, если вы используете PHP 5> = 5.2, используйте более продвинутый DateTime класс.

<?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";
...