Pergunta

Existe algum tipo de serviço da web (ou de qualquer outra forma) para obter as configurações de fuso horário atuais de uma cidade (EUA).Para as partes do país que não seguem o horário de verão e basicamente saltam de fuso horário quando todo mundo está mudando o horário de verão/inverno...Não gosto de criar banco de dados próprio de locais que não seguem o horário de verão.Existe uma maneira de extrair esses dados sob demanda?

Eu preciso disso para o servidor de banco de dados (não para estações de trabalho clientes) - existem entidades armazenadas no banco de dados que possuem Cidade, Estado como propriedades.Preciso saber o fuso horário atual dessas entidades a qualquer momento.

Foi útil?

Solução

earthtools.org fornece um serviço web gratuito para obter o fuso horário de uma cidade aqui:

http://www.earthtools.org/webservices.htm#timezone

Você acabou de passar os valores long/lat assim:(Isto é para Nova York)

http://www.earthtools.org/timezone-1.1/40.71417/-74.00639


EDITAR:

Parece que o Earthtools foi desligado.Uma boa alternativa (que não existia em 2008 quando esta pergunta foi respondida) é a API Google Time Zone.Para usá-lo você deve primeiro ativar a API de fuso horário na sua conta.É gratuito se você ficar abaixo destes limites:

  • 2.500 solicitações por período de 24 horas.
  • 5 solicitações por segundo.

A documentação está disponível no Google Developers.

Outras dicas

Encontramos o mesmo problema e, junto com as ótimas sugestões acima, o Google parece ter duas APIs complementares, uma para fuso horário a partir de dados de geocódigo (latitude/longitude) e a API de geocódigo.

Por exemplo, para obter o fuso horário e o deslocamento de São Francisco:

1) Converta a cidade em um local geocodificado:

http://maps.googleapis.com/maps/api/geocode/json?address=San%20Francisco,+CA&sensor=false

A localização geocodificada está nos dados de retorno JSON:

"location": {
    "lat":  37.77492950,
    "lng": -122.41941550
}

2) Converta a localização geocodificada para um fuso horário local e deslocamento, se houver:

https://maps.googleapis.com/maps/api/timezone/json?location=37.77492950,-122.41941550&timestamp=1331161200&sensor=false

Que retorna as informações do fuso horário atual:

{
          "status": "OK",
       "dstOffset":  0.0,
       "rawOffset": -28800.0,              
      "timeZoneId": "America/Los_Angeles",
    "timeZoneName": "Pacific Standard Time"
}

Os fusos horários de uma região podem mudar por vários motivos.Portanto, é uma boa ideia encontrar uma solução confiável baseada em servidor e não em cache.Para mais informações, veja Artigo sobre fuso horário da Wikipedia.

Geonames.org possui um conjunto maravilhoso de dados mundiais que estão disponíveis via webservice ou download:

http://www.geonames.org/export/ws-overview.html

Em particular

http://www.geonames.org/export/web-services.html#timezone

.

As informações de fuso horário do Earthtool não estão atualizadas ...por exemplo, o deslocamento atual do Sri Lanka é +5,5 em relação ao GMT, mas o EarthTools mostra como +6, que era o deslocamento antigo antes de 2005.

Eu sugiro GeoNames.org.

WorldTimeServer. com tem o que parece ser um banco de dados de fuso horário abrangente, ao qual você pode adquirir acesso em vários formatos, incluindo um componente .NET para uso na Web.

Sem conexão, só tive que pesquisar a mesma coisa recentemente.

Biblioteca offline simples: APTimeZones

Para encontrar o fuso horário de um local, você pode usar a API de fuso horário da API do Google Maps.Infelizmente, isso exige que você consulte um serviço remoto e você está sujeito aos seus limites.

Aqui está uma biblioteca rom Alterplay chamada APTimeZones(Git está anexado) que permite extrair um NSTimeZone de um determinado local sem a necessidade de se conectar a um serviço remoto. APTimeZones funciona consultando uma lista local de fusos horários (incluída na biblioteca).

Caso alguém se depare com esta questão.

  • Você poderia usar a API do Google para procurar um endereço.Isso retorna latitude/logitude.Com esses valores em mãos, você pode encontrar o fuso horário mais próximo usando, por exemplo.PHP.

  • Ou você pode usar uma API como timezoneapi.io (estou por trás disso), que permite pesquisar um endereço/cidade/país.Ele retorna o endereço, as informações de fuso horário e a data/hora atual para esse fuso horário específico.

https://timezoneapi.io/developers/address

Encontrei um banco de dados para download gratuito aqui: http://citytimezones.info/

[editar] ...mas informações mais precisas (incluindo fontes) baseadas no banco de dados Olson podem ser encontradas aqui: http://en.wikipedia.org/wiki/Tz_database

Eu sei que isso foi respondido, mas estou postando esta resposta porque as pessoas ainda podem considerá-la útil - A resposta selecionada não funciona com sucesso no momento.

O Google possui seu próprio serviço, que é muito confiável e fácil de usar, e gera informações no formato JSON.Ele ainda permite especificar um horário personalizado, por exemplo, obter o fuso horário em 02/02/2013 em Malta.

https://developers.google.com/maps/documentation/timezone/

Google, 2.500 solicitações gratuitas por diahttps://developers.google.com/maps/documentation/timezone/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top