Há muitas perguntas no StackOverflow sobre como resolver um fuso horário de um local. Este wiki da comunidade é uma tentativa de consolidar todas as respostas válidas.
Atualize minha resposta ou adicione a sua como achar melhor.
A pergunta
Dada a latitude e longitude de um local, como saber qual fuso horário está em vigor nesse local?
Na maioria dos casos, procuramos um ID de fuso horário IANA / Olson, embora alguns serviços possam retornar apenas um deslocamento UTC ou outro identificador de fuso horário. Leia as informações da tag de fuso horário para obter detalhes.
geolocation
timezone
latitude-longitude
Matt Johnson-Pint
fonte
fonte
"Europe/London"
identificador de fuso horário do banco de dados de fuso horário da IANA.Respostas:
Serviços Web de localização de fuso horário
Dados brutos do limite de fuso horário
Os projetos a seguir foram anteriormente fontes de dados de limite de fuso horário, mas não são mais mantidos ativamente.
Implementações offline de geolocalização de fuso horário
Implementações que usam os dados do Timezone Boundary Builder
Implementações que usam os dados tz_world mais antigos
Bibliotecas que chamam um dos serviços da web
Serviços da Web auto-hospedados
Outras Idéias
Atualize esta lista se você souber de outras pessoas
Além disso, observe que a abordagem da cidade mais próxima pode não produzir o resultado "correto", apenas uma aproximação.
Conversão para zonas do Windows
A maioria dos métodos listados retornará um ID de fuso horário da IANA. Se você precisar converter para um fuso horário do Windows para usar com a
TimeZoneInfo
classe .NET, use o TimeZoneConverter biblioteca .Não use zone.tab
O banco de dados tz inclui um arquivo chamado
zone.tab
. Este arquivo é usado principalmente para apresentar uma lista de fusos horários para um usuário escolher. Inclui as coordenadas de latitude e longitude para o ponto de referência para cada fuso horário. Isso permite que um mapa seja criado destacando esses pontos. Por exemplo, veja o mapa interativo mostrado na home page do fuso horário .Embora possa ser tentador usar esses dados para resolver o fuso horário a partir de coordenadas de latitude e longitude, considere que esses são pontos - não limites. O melhor que se poderia fazer seria determinar o ponto mais próximo , que em muitos casos não será o ponto correto.
Considere o seguinte exemplo:
Os dois quadrados representam diferentes fusos horários, onde o ponto preto em cada quadrado é o local de referência, como o que pode ser encontrado em zone.tab. O ponto azul representa o local para o qual estamos tentando encontrar um fuso horário. Claramente, esse local está dentro da zona laranja à esquerda, mas se apenas olharmos a uma distância mais próxima do ponto de referência, ele será resolvido para a zona esverdeada à direita.
fonte
Que tal esta solução para o node.js https://github.com/mattbornski/tzwhere
E seu equivalente em Python: https://github.com/pegler/pytzwhere
fonte
No Teleport, começamos a abrir nossas APIs e um dos casos também está expondo informações de TZ para coordenadas.
Por exemplo, pode-se solicitar todas as nossas informações de TZ disponíveis para coordenadas da seguinte maneira:
Isso retornaria o seguinte
Para o exemplo, usei ./jq para análise JSON.
fonte
Veja como você pode usar o editor de scripts do Google para obter o fuso horárioName e o timeZoneId dentro de uma gsheet.
Etapa 1. Obtenha uma chave de API para a API de fuso horário do Google
Etapa 2. Crie uma nova gsheet. Abaixo do menu 'ferramentas', clique em 'editor de scripts'. Adicione o seguinte código:
Etapa 3. Salve e publique sua
getTimezone()
função e use-a como mostrado na imagem acima.fonte
Você pode usar o geolocator.js para obter facilmente fuso horário e muito mais ...
Ele usa APIs do Google que exigem uma chave. Então, primeiro você configura o geolocator:
Obtenha o TimeZone se você tiver as coordenadas:
Exemplo de saída:
Localize e obtenha o TimeZone e muito mais
Se você não tiver as coordenadas, poderá localizar a posição do usuário primeiro.
O exemplo abaixo tentará primeiro a API de localização geográfica em HTML5 para obter as coordenadas. Se falhar ou rejeitar, as coordenadas serão obtidas por meio da pesquisa Geo-IP. Finalmente, obterá o fuso horário e mais ...
Exemplo de saída:
fonte
https://en.wikipedia.org/wiki/Great-circle_distance
E aqui está uma boa implementação usando dados JSON: https://github.com/agap/llttz
fonte
divulgação: sou o autor da imagem do docker descrita abaixo
Embrulhei https://github.com/evansiroky/node-geo-tz em um contêiner de encaixe muito simples
Você pode iniciar o docker-container com
Isso expõe o serviço de pesquisa em seu host local na porta 3000. Você pode fazer uma pesquisa de fuso horário
fonte
Experimente este código para usar a API do fuso horário do Google em Java com o NTP Time Client atual e corrija a conversão UTC_Datetime_from_timestamp:
E use-o com:
fonte
Ok, aqui está a versão curta, sem o horário NTP correto:
E use-o com:
fonte
Se você deseja usar geonames.org, use este código. (Mas geonames.org às vezes é muito lento)
E use-o com:
fonte
Partida Guppy:
Método vinculado
America/Anchorage.dst
deDstTzInfo
America / Anchorage 'LMT-1 dia, 14:00:00 STD
fonte
É realmente importante reconhecer que esse é um problema mais complicado do que a maioria suspeitaria. Na prática, muitos de nós também estão dispostos a aceitar um conjunto de códigos de trabalho que funcione para "o maior número possível de casos", onde pelo menos seus problemas fatais podem ser identificados e minimizados coletivamente. Então, eu posto isso com tudo isso e com o espírito do OP em mente. Por fim, para obter um valor prático para outras pessoas que estão tentando converter o GPS para o fuso horário com o objetivo final de ter um objeto de tempo sensível à localização (e mais importante para ajudar a melhorar a qualidade de implementações médias com objetos de tempo que seguem este wiki), aqui está o que eu criei em Python (sinta-se à vontade para editar):
fonte
Existem várias fontes on-line que possuem dados geojson para fusos horários ( aqui está uma , aqui está outra)
Use uma biblioteca de geometria para criar objetos de polígono a partir das coordenadas geojson ( bem torneadas [python], GEOS [c ++], JTS [java], NTS [.net]).
Converta seu lat / lng em um objeto de ponto (no entanto, sua biblioteca representa isso) e verifique se ele cruza o polígono do fuso horário.
fonte
usando latitude e longitude, obtenha o fuso horário do local atual abaixo do código que funcionou para mim
fonte
Para aqueles que usam Javascript e desejam obter um fuso horário de um CEP pelas APIs do Google , aqui está um método.
Nota: meu entendimento é que os códigos postais não são únicos em todos os países; portanto, isso provavelmente é mais adequado para uso nos EUA.
fonte
fonte
Se você preferir evitar um serviço da Web, poderá recuperar essas informações do navegador da seguinte maneira:
No meu caso atual, ele está imprimindo:
Data completa: 27/01/2014 16: 53: 37 Deslocamento UTC : UTC-3 Código do país Fuso horário: BRT
Espero que possa ser útil.
fonte