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?
Quando dou o comando : echo ini.get('date.timezone') . "<br>"; não aparece nada, já configurei no php.ini e nada, também já coloquei o default no código e nada também. Alguém pode me ajudar?
Estou desenvolvendo um sistema de leilão que está tudo ok.
Gostaria de saber se existe uma horário universal em php, onde todos os usuários do planeta tenham o mesmo tempo restante para o término do leilão.
Atualmente aqui no Brasil o leilão termina em x tempo, mas lá nos EUA é outro tempo.
Tem como unificar isso?
Outra coisa, cada vez que um usuário der um lance e faltar menos de 5 minutos para terminar, ele fará um acréscimo de mais 5min no tempo restante.
Fiz dessa maneira:
$data_atual = $row_leiloes['final'];
$nova_data = date('Y-m-d H:i:s', strtotime($data_atual . '+5 minutes'));
Lembrando que essa nova data, terá quer ser padrão para todos os usuários do planeta.
Fico no aguardo.
Estou trabalhando em um sistema e ele tem uma tabela que seta algumas configurações de usuário. Uma dessas configurações é timezone. Mas como mudar as datas mostradas para cada usuário de acordo com a timezone escolhida por ele? Isso é possível?
Creio que não é possível fazer isso utilizando date_default_timezone_set, pois ela vai setar a timezone para aplicação inteira. Gostaria de saber se existe um jeito de antes de mostrar determinada data, ela possa ser modificada para a timezone do cliente e somente depois mostrada na tela.
Tenho uma dúvida simples, mas que sugou minhas forças.
Estou desenvolvendo um site em wordpress que em um das áreas precisei montar um calendário, e pra isso utilizei a função cal_days_in_month(). Até ai blz, consegui montar o calendário direitinho e tals. O grande problema é que a data retornada pela função date() não fica em português de jeito nenhum! Vei, eu fiz de tudo, mexi no php.ini, defini timezone em tempo de execução etc.
Resumo da história: me rendi e utilizei o strftime() com setlocale(). Dessa forma deu certo, mas gostaria de saber se alguém já passou por esse tipo de problema, pois gostaria muito de saber o motivo da função date não pegar o timezone.