Pergunta

Parece há muitas maneiras de abordar data e hora de massagem no php. Normalmente, eu sou apenas a cada lidar com o tempo local. Hoje, eu preciso trabalhar em UTC.

Eu estou consultando contra um API, os dados que eles me dão sobre um registro arbitrário é: criado: Thu, 18 jun 2009 21:44:49 +0000 * Documentada como 'UTC tempo de criação record'

utc_offset: -28.800 * Diferença entre os usuários re

Eu preciso convertê-lo em uma string simples para mostrar ao usuário o tempo e data em que os dados foram apresentados na sua hora local.

Eu acredito, as traduz acima para, em caso de Calif por exemplo.: Quinta-feira 18 de junho de 2009 02:44:49

Meu objetivo é chegar a um valor de tempo que posso passar para date () para facilitar a formatação em um "bonito" formato.

É realmente tão simples como converter o acima do tempo criada para segundos de época, adicionando o deslocamento e, em seguida, de passagem, que até à data ()? Qualquer gothcha de olhar para fora?

$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);

Graças

Foi útil?

Solução

PHP deve fazer coisa automaticamente para você. Eu também recomendo usar o objeto DateTime vez.

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

funções de data e hora do PHP são fuso horário ciente .. Certifique-se de que você está em uma versão recente do PHP, porque um monte de trabalho tem sido feito para melhorar estes sistemas.

Outras dicas

Você pode usar date_default_timezone_set para alternar entre fusos horários. No seu caso, você deve passar as informações fuso horário do perfil do usuário. Como Evert recomendado, se você estiver usando PHP 5> = 5.2, por favor use o mais avançado DateTime classe .

<?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";
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top