Desde esse último final de semana, que os computadores atualizaram a hora para o horário de verão, eu não consigo corrigir a hora no meu servidor localhost aqui.
A data do servidor está correta (08:47 agora). No php.ini o date.timezone está igual a "America/Sao_Paulo" e mesmo assim no sistema está mostrando o horário 09:47.
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 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.