Domanda

Esiste un servizio web di qualche tipo (o in qualsiasi altro modo) per ottenere le impostazioni attuali del fuso orario per una città (degli Stati Uniti).Per le parti del paese che non seguono l'ora legale e sostanzialmente saltano i fusi orari quando tutti gli altri cambiano ora legale/ora solare...Non ho voglia di creare un proprio database dei luoghi che non seguono l'ora legale.C'è un modo per estrarre questi dati su richiesta?

Ne ho bisogno per il server del database (non per le workstation client): ci sono entità archiviate nel database che hanno Città, Stato come proprietà.Ho bisogno di conoscere il fuso orario attuale per queste entità in qualsiasi momento.

È stato utile?

Soluzione

Earthtools.org fornisce un servizio web gratuito per ottenere il fuso orario da una città qui:

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

Basta passare i valori long/lat in questo modo:(Questo è per New York)

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


MODIFICARE:

Sembra che gli Earthtools siano stati chiusi.Una buona alternativa (che non esisteva nel 2008 quando è stata data risposta a questa domanda) è l'API Google Time Zone.Per usarlo devi prima attivare l'API Time Zone sul tuo conto.È gratuito se rimani al di sotto di questi limiti:

  • 2500 richieste in un periodo di 24 ore.
  • 5 richieste al secondo.

La documentazione è disponibile su Google Developers.

Altri suggerimenti

Abbiamo riscontrato lo stesso problema e, oltre agli ottimi suggerimenti di cui sopra, Google sembra avere due API complementari, una per il fuso orario dai dati di geocodifica (latitudine/longitudine) e l'API di geocodifica.

Ad esempio, per ottenere il fuso orario e l'offset per San Francisco:

1) Converti la città in una posizione geocodificata:

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

La posizione geocodificata si trova nei dati di ritorno JSON:

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

2) Convertire la posizione geocodificata in un fuso orario locale e un offset, se presente:

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

Che restituisce le informazioni sul fuso orario corrente:

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

I fusi orari di una regione possono cambiare per diversi motivi.Quindi è una buona idea trovare una soluzione autorevole basata su server e non la cache.Per ulteriori informazioni, vedere Articolo sul fuso orario di Wikipedia.

Geonames.org ha una meravigliosa serie di dati mondani disponibili tramite servizio web o download:

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

In particolare

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

.

Le informazioni sul fuso orario di Earthtool non sono aggiornate...ad esempio, l'offset attuale dello Sri Lanka è +5,5 dal GMT ma EarthTools mostra come +6 che era il vecchio offset prima del 2005.

suggerisco GeoNames.org.

WorldTimeServer.com ha quello che sembra essere un database completo di fusi orari, a cui è possibile acquistare l'accesso in una varietà di formati, incluso un componente .NET per l'utilizzo sul Web.

Nessun collegamento, ho solo dovuto ricercare la stessa cosa di recente.

Libreria offline semplice: APTimeZones

Per trovare il fuso orario di una posizione puoi utilizzare l'API del fuso orario dell'API di Google Maps.Sfortunatamente questo richiede di interrogare un servizio remoto e sei soggetto ai suoi limiti.

Ecco una libreria rom chiamata Alterplay APTimeZones(Git è allegato) che consente di estrarre un NSTimeZone da una determinata posizione senza la necessità di connettersi a un servizio remoto. APTimeZones funziona interrogando un elenco locale di fusi orari (incluso nella libreria).

Nel caso in cui qualcuno dovesse imbattersi in questa domanda.

  • Potresti utilizzare l'API di Google per cercare un indirizzo.Ciò restituisce latitudine/logitudine.Con questi valori in mano, puoi trovare il fuso orario più vicino utilizzando ad es.PHP.

  • Oppure puoi utilizzare un'API come timezoneapi.io (ci sono io) che ti consente di cercare un indirizzo/città/paese.Restituisce l'indirizzo, le informazioni sul fuso orario e la data/ora corrente per quel dato fuso orario.

https://timezoneapi.io/developers/address

Ho trovato un database scaricabile gratuitamente qui: http://citytimezones.info/

modificare] ...ma informazioni più accurate (comprese le fonti) basate sull'Olson DB possono essere trovate qui: http://en.wikipedia.org/wiki/Tz_database

So che c'è una risposta, ma sto pubblicando questa risposta perché le persone potrebbero ancora trovarla utile: la risposta selezionata non funziona correttamente in questo momento.

Google ha il proprio servizio, che è molto affidabile e facile da usare e fornisce informazioni in formato JSON.Consente anche di specificare un orario personalizzato, ad esempio ottenere il fuso orario in 02/02/2013 a Malta.

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

Google, 2500 richieste gratuite al giornohttps://developers.google.com/maps/documentation/timezone/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top