Encontrar diferença de horas entre fusos
Olá Pessoal,
Tenho a seguinte necessidade:
Encontrar a diferença, em horas, entre dois fusos horários indiferente se a diferença é para maior ou menor.
Qual a utilidade?
Tenho um projeto onde o usuario precisa indicar o seu fuso horario para realizar uma determinada ação. Até ai ok.
Entretanto, este meu usuario poderá estar num fuso diferente da minha aplicação.
Tendo dito o cenário é o seguinte:
Minha aplicação está num servidor de fuso Espanha/Madrid e meu usuário está no fuso America/Sao_paulo.
Neste exemplo eu tenho uma diferença e 5 horas, onde o usuário em America/Sao_paulo está a 5 horas antes do horario do meu servidor, ou seja, usuário está logado as 1500 do dia 23/08 e no meu servidor todas as informações estão sendo processadas as 20:00 do dia 23/08..
Então para facilitar a vida deste meu usuário, ele vai indicar o seu fuso e o meu sistema fara os calculos para que, de acordo com a diferença entre os fusos, meu servidor processe tudo baseado no horario local de Europe/Madrid.
Parece simples mas chegarei a um momento onde terei usuarios de diversos fusos realizando ações em minha aplicação.
Deste modo eu tenho rabisquei o seguinte código
date_default_timezone_set('Europe/Madrid'); //seto como default o fuso do meu servidor
$datek = date('H'); //salvo na variavel a hora do meu servidor
echo "<br>".$datek."<br>"; //imprimo por imprimir
date_default_timezone_set('America/Sao_paulo'); //seto um novo default com o fuso do meu usuario
$datep = date('H'); /salvo na variavel a hora baseada no fuso do usuario
echo "<br>".$datep."<br>"; //imprimo por imprimir
echo "<br>".(($datek - $datep)+24)."<br>"; //imprimo e o resultado é 5
Neste modo com o fuso America/Sao_paulo o resultado é 5, ou seja, correto, logo me atende!
Agora se o meu usuario tiver o fuso Europe/Lisbon, onde a diferença é 1 hora a menos entre Lisboa e Madrid (por exemplo Lisboa 03:00AM - MAdrid 04:00AM) o resultado deste script é 25
Alguma sugestão de melhoria ou alguma outra função que me traga essa diferença de hora entre dois fusos?Discussão (5)
Carregando comentários...