Resolvendo diferenças de horas no PHP

Publicado por Rodrigo Gonçalves em 18/11/2011

[ Hits: 10.939 ]

 


Resolvendo diferenças de horas no PHP



Em algumas situações já suei a camisa com a função date() ou a time() do PHP. Pois ambas, em algumas situações e em alguns casos, adiantam geralmente uma ou duas horas da hora atual de seu computador.

Então para resolver este problema, vamos usar como base o parâmetro dmdate(). Pois ele pega como padrão o horário do meridiano de Greenwich, ficando a nosso encargo apenas descontar a hora do fuso horário.

No meu caso moro em São Paulo, descontei o valor -3. Vamos ao código:

<? $time = mktime(date('H')-3, date('i'), date('s')); $hora = gmdate("H:i:s", $time); echo $hora; ?>

Belezinha?

Espero ter ajudado, um abraço a todos!

Outras dicas deste autor

Instalando temas no aMSN

Coloque seu papo em dia com Pidgin multi-protocolo

Salvando sua lista de aplicativos com o Synaptic

Instalando Google Chrome num piscar de olhos

Instale o navegador Chrome em seu Linux

Leitura recomendada

Dica de livro para quem quer aprender PHP

Sintaxe das queries

Upload de arquivos maiores que 2MB em PHP

Executando comandos do sistema com PHP

Uso das aspas simples, duplas e invertidas

  

Comentários
[1] Comentário enviado por edelmo em 18/11/2011 - 11:44h

Muito interessante, mas e no caso de regiões com horário de versão? Seria necessário adaptar o código sempre que ocorrer essa mudança! Agora mesmo, em São Paulo estamos no fuso -2.

[2] Comentário enviado por rodrigo.gsantana em 18/11/2011 - 17:50h

Olá Edelmo, podemos aplicar uma condição dizendo que se a minha data atual for maior que o "inicio do horário de verão" e menor do que o "final do horário de verão", então meu fuso horário será "x". Do contrário será "y", o que você acha do código abaixo?

<?php
echo date('d/m/Y H:i:s', time());

$inicio = strtotime(2011/10/16 00:00:00'); // inicio horario de verao
$termino = strtotime(2012/02/26 00:00:00'); // final horario de verao

if (time() > $inicio && time() < $termino ) {
date_default_timezone_set('Etc/GMT-2');
} else {
date_default_timezone_set('Etc/GMT-2');
}

echo date('d/m/Y H:i:s', time());
?>

Espero ter ajudado, um grande abraço amigo!

[3] Comentário enviado por maxaka em 17/04/2013 - 21:59h

Muito bom ..



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts