Resolvendo diferenças de horas no PHP

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

[ Hits: 10.859 ]

 


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

Instalando Google Chrome num piscar de olhos

Coloque seu papo em dia com Pidgin multi-protocolo

Salvando sua lista de aplicativos com o Synaptic

Instale o navegador Chrome em seu Linux

Leitura recomendada

Erro ao executar script php no KUbuntu 7.10

Executando comandos do sistema com PHP

Traduzido o guia PHP-Nuke for Idiots

Dica de livro para quem quer aprender PHP

PHP orientado a objeto com MySQL e AJAX - Seleção de estado e cidade

  

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