Autor: BUILDER.COM
Não há dúvida de que o uso de scripts JavaScript pode exibir facilmente a hora local em uma página da web, visualizando diretamente o relógio do usuário. Mas e se você quiser exibir a hora em uma região diferente – por exemplo, se sua sede estiver em outro país e você quiser ver a hora “local” em vez da hora local?
Para fazer isso, vários cálculos de tempo devem ser realizados para converter a hora local na hora de destino. Este artigo explica como realizar esses cálculos.
Passo 1:
O primeiro passo é obter a hora local. Em JavaScript, isso certamente pode ser feito facilmente inicializando um objeto Data().
// cria o objeto Date para a localização atual
d = new Date();
Ao chamar o método getTime() do objeto Data(), você pode exibir o número de milissegundos entre 1º de janeiro de 1970 e a hora atual.
// converte para ms desde 1º de janeiro de 1970
localTime = d.getTime();
Etapa 2:
Em seguida, encontre o valor do deslocamento da hora local por meio do método getTimezoneOffset() do objeto Data(). Por padrão, esse método exibe o resultado do valor de deslocamento de fuso horário em minutos, portanto, esse valor é convertido em milissegundos no cálculo anterior.
// obtém o deslocamento UTC local e converte para mseg
localOffset = d.getTimezoneOffset() * 60000
Observe que o valor de retorno negativo do método getTimezoneOffset() indica que a hora local é anterior ao Horário Padrão Universal (UTC), enquanto o retorno positivo; o valor indica a hora local após o Tempo Universal Coordenado (UTC).
Nota: Caso você esteja se perguntando como consegui o fator de multiplicação de 60.000, lembre-se de que 1.000 milissegundos equivalem a um segundo e um minuto equivale a 60 segundos. Portanto, para converter minutos em milissegundos, multiplique 60 por 1.000, o que equivale a 60.000.
A terceira etapa
é adicionar a hora local e o valor de deslocamento do fuso horário local para obter o horário padrão internacional (UTC) atual.
//obtém a hora UTC em mseg
utc = localTime + localOffset
Aqui, a variável utc contém o horário padrão internacional (UTC) atual; No entanto, este tempo é expresso como o número de milissegundos desde 1º de janeiro de 1970 até o presente. Que seja expresso desta forma por enquanto, pois ainda há alguns cálculos a fazer.
A quarta etapa é
obter o Horário Padrão Internacional (UTC), em seguida, obter o valor do deslocamento horário do Horário Padrão Internacional (UTC) da cidade de destino, convertê-lo em milissegundos e adicionar o Horário Padrão Internacional (UTC).
// obtemos e adicionamos o deslocamento de horário UTC do destino
// por exemplo, Bombay
// que é UTC + 5,5 horas
offset = 5.5;
bombay = utc + (3600000
*offset);
fatores, lembre-se de que 1.000 milissegundos equivalem a um segundo e uma hora equivale a 3.600 segundos. Portanto, para converter horas em milissegundos, multiplique 3.600 por 1.000, o que equivale a 3.600.000.
Neste momento, a variável bombay contém a hora local de Mumbai, na Índia. Esta hora local é expressa como o número de milissegundos desde 1º de janeiro de 1970 até o presente. Obviamente, isso não faz sentido, então temos que fazer alguns cálculos.
A quinta etapa
é inicializar um novo objeto Data() e chamar o método toLocalString() deste objeto. Convertemos o valor de tempo calculado na etapa anterior em uma string de data/hora que todos possam entender.
// converte o valor em mseg para data string
nd = new Date(bombay))
;
A conversão está completa!
Depois deresumir
e compreender as etapas acima, vamos dar uma nova olhada neste script (Listagem A), que cria uma função compacta e personalizada calcTime() que executa todos os cálculos e retorna um valor de tempo.
List A
<html>
<head>
<script language="JavaScript">
// função para calcular a hora local
// em uma cidade diferente
// dado o deslocamento UTC da cidade
function calcTime(city, offset) {
// cria o objeto Date para localização atual
d = new Date();
// converte para ms
// adiciona deslocamento de fuso horário local
// obtém a hora UTC em ms
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// cria um novo objeto Date para uma cidade diferente
// usando o deslocamento fornecido
nd = new Date(utc + (3600000*offset));
// retorna a hora como uma string
return "A hora local em " + city + " é " + nd.toLocaleString()
}
//
obtém
o alerta de horário de Bombaim(calcTime('Bombay', '+5.5'));
obter alerta de horário de Singapura
(
calcTime(
'Singapore', '+8'));
//
obter alerta de horário de Londres
(calcTime('London'
, '+1'));
/body>
</html>
Aqui, a função calcTime() aceita o nome de uma cidade e seu valor de deslocamento do Tempo Universal Coordenado (UTC) (em horas). Em seguida, ele executa internamente todos os cálculos descritos acima e retorna uma string contendo a hora local desta cidade.
Aqui estão alguns exemplos da saída da Listagem A.
O horário local de Mumbai é 16h43h51 de segunda-feira, 1º de agosto de 2005
O horário local de Cingapura é 19h13h51 de segunda-feira, 1º de agosto de 2005
O horário local de Londres é 1º de agosto de 2005, segunda-feira 12h13:51
Da próxima vez que você escrever um script de fuso horário para sua página da web, esperamos que esse script economize algum tempo. Aproveitar! !