Преобразование из UTC в PHP с использованием переменной timezome - PullRequest
1 голос
/ 25 апреля 2011

Я храню метки времени на своем сервере, используя простую метку времени в SQL. Когда я опускаю эту метку времени, я запускаю ее через следующую функцию, чтобы отформатировать время.

Как добавить следующую функцию, чтобы преобразовать отметку времени в любой часовой пояс, из которого запрашивается пользователь?

// Returns the formatted time
function displayDate($timestamp)
{
    $secAgo = time() - $timestamp;
    // 1 day
    if ($secAgo < 86400)
        return date('h:i:A', $timestamp);
    // 1 week
    if ($secAgo < (86400 * 7))
       return date('l', $timestamp);
    // older than 1 week
    return date('m/t/y', $timestamp);
}

Ответы [ 2 ]

3 голосов
/ 25 апреля 2011

Если вы хотите изменить имя часового пояса, вы можете использовать что-то вроде:

$date = new DateTime(date('Y-m-d H:i:s', $timestamp), new DateTimeZone('UTC'));
$date->setTimezone(new DateTimeZone('Asia/Vladivostok'));
return $date->format('m/t/y');

Где Asia/Vladivostok - часовой пояс пользователя.

1 голос
/ 25 апреля 2011
Метод

@ zerkms - лучший способ конвертировать временные метки в любой часовой пояс.

Но если вы будете делать это каждый раз, когда вам нужно отобразить время, это может привести к значительному снижению производительности, поскольку вы настраиваетеи сносить объект часового пояса каждый раз.Есть удобный ярлык, если все временные метки на странице будут в одном часовом поясе.(Обычно это так, потому что пользователи не меняют часовые пояса в середине HTTP-запроса.)

Где-то за пределами функции выполните:

date_default_timezone_set('America/New_York');  // or any other timezone

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

Как только вы это сделаете, date() автоматически начнет использовать правильный часовой пояс, предполагая, что $timestampпредставляет метку времени Unix.Это также автоматически исправит переход на летнее время.Поэтому нет необходимости что-либо менять в этой функции.

Используйте timezone_identifiers_list () , чтобы получить список допустимых часовых поясов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...