Escrito por
Iremar Primeiro setamos a hora local em relação ao horário GMT, através da variável $GMT
$GMT = -3;
Nesse exemplo, colocamos -3, que é a hora GMT de Brasília
Em seguida formatamos a data para o formato brasileiro (europeu), no caso dd/mm/aaaa e calculamos a hora do servidor com a hora setada na variavel $GMT.
Para formatar a data, usei o date e o strtotime para o calculo entre a data/hora e o horario GMT. Lembrando que o formato da data pode ser alterado, por exemplo, d/m/Y' pode ser alterado para 'Y-m-d'
$data_GMT = date('d/m/Y H:i:s', strtotime($GMT. 'hours'));
Se para você está bom imprimir no dd/mm/aaaa hh:mm, ótimo!, então é apenas dar um:
echo $data_GMT;
que seria impresso na tela algo como:
20/06/2008 20:42hs
Mas, para o meu caso, eu precisava que a data e a hora fosse separado, pois eu usaria em lugares distintos no site. Portanto, damos um split para separar a data da hora, transformando em duas variaveis $data_GMT e $hora.
list($data_GMT,$hora) = split (" ", $data_GMT, 2);
E está pronto o script, agora só mandar imprimir na tela.
Primeiro imprimi a hora do servidor, apenas para conferencia.
echo "hora do servidor: ". date('d/m/Y');
echo "
hora do servidor: ". date('H:i:s');
E agora mandamos imprimir a data e hora final, já calculado o GMT.
Você poderia perguntar:
Porque colocar a data?
Simples, imagina se no servidor são 1h da manhã do dia 20, e estamos em -3 GMT. Então a hora local seria 23:00hs (DO DIA 19). Por isso a data é importante e útil.
echo "
data local: $data_GMT";
echo "
hora local: $hora";
Aqui vai o script completo:
<?php
// Código criado em 20/20/2007 por Iremar Afonso ([email protected]).
// Script para mostras a data e hora de acordo com o GMT local
// Util para quem tem servidores fora do país
// Outra utilidade é para que tem a hora GMT do cliente / usuario em banco de dados
// e quer mostrar na tela a hora da cidade local na tela.
// o que não é a mesma coisa que colocar a hora do computador cliente
// pois o mesmo pode estar errado ou algo parecido.
// setamos a hora local em relação a GMT
// essa variavel pode vir de um DB
$GMT = -3; // hora GMT para Brasilia / SP etc
// calcula a hora do servidor com a hora setada na variavel $GMT
// date (d/m/Y' pode ser alterado, por exemplo: 'Y-m-d'
$data_GMT = date('d/m/Y H:i:s', strtotime($GMT. 'hours'));
// separa a data da hora, transformando em duas variaveis $data_GMT e $hora
list($data_GMT,$hora) = split (" ", $data_GMT, 2);
// aqui mostra a hora do servidor (apenas para conferencia
echo "hora do servidor: ". date('d/m/Y');
echo "
hora do servidor: ". date('H:i:s');
// aqui mostra a data e a hora local
echo "
data local: $data_GMT";
echo "
hora local: $hora";
?>
Veja este artigo e muitos outros sobre PHP