php - paises - Cómo obtener la zona horaria del código de aeropuerto(IATA/FAA)
codigos iata aeropuertos pdf (5)
Hmmm ... tal vez puedas hacer un convertidor tú mismo - debería ser lo suficientemente simple con una pequeña tabla de base de datos que mapee códigos de aeropuertos para zonas horarias.
Encontré el siguiente enlace que contiene un archivo CSV de más de 5,000 códigos de aeropuertos y su zona horaria relativa a UTC.
http://openflights.org/data.html
Puede importar el archivo CSV desde ese enlace a su propia base de datos y luego hacer que su código funcione alrededor de las zonas horarias y los aeropuertos en esa tabla.
Estoy tratando de hacer una función PHP que devuelva la zona horaria UTC para un código de aeropuerto dado (IATA / FAA).
Lo que la función debería hacer es algo como esto:
echo getTimezoneFromAirportCode("CPH"); // +1
echo getTimezoneFromAirportCode("CXI"); // +14
Para hacer esta función, necesito una lista de todos los códigos de aeropuerto y sus zonas horarias.
Al buscar un poco encontré esta lista: https://sourceforge.net/p/openflights/code/HEAD/tree/openflights/data/airports.dat?format=raw (Fuente: http://openflights.org/data .html )
Después de buscar un par de códigos de aeropuerto en la lista, descubrí que algunos de los datos eran incorrectos. Por ejemplo, enumera CXI
para estar en la zona horaria UTC -12
, que según esta página es incorrecta.
¿ getTimezoneFromAirportCode
de ustedes conoce una lista pública que proporciona los datos necesarios para hacer la función getTimezoneFromAirportCode
?
Recomendaría la base de datos "NASR" de la FAA , que es un conjunto de datos de 56 días proporcionado por la FAA. La base de datos es un conjunto de archivos de texto sin formato que utilizan columnas ASCII de ancho fijo. Se proporcionan archivos de descripción de formato que muestran qué es cada columna.
Uno de los archivos en ese conjunto de datos es APT.txt
que contiene un campo de zona horaria para cada aeropuerto; vea la descripción de formato para APT.txt
para encontrar los desplazamientos de columna. Puede sonar intimidante pero es muy fácil de analizar.
Tenga en cuenta también que este es el producto de datos de navegación sin procesar "oficial" ofrecido por la FAA. Es "de la boca del caballo", por así decirlo.
[EDITAR: Esta base de datos solo cubre los aeropuertos de EE. UU. ver comentarios a continuación.]
Viendo que la pregunta aún está abierta, me gustaría señalar mis propios archivos de mapa de zona horaria . Para su propósito particular, el tzmap de IATA parece perfecto:
https://raw.github.com/hroptatyr/dateutils/tzmaps/iata.tzmap
Obviamente, tendrías que criticar el desplazamiento en cuestión (depende de una fecha, ya que podría cambiar con el tiempo) de los archivos zoneinfo, por ejemplo, con zdump(1)
.
He logrado encontrar una solución al problema. A través de la API de flightstats.com es posible obtener un acceso gratuito pero limitado a una base de datos completa del aeropuerto: https://developer.flightstats.com/api-docs/airports/v1
La API devuelve todos los aeropuertos activos / inactivos en el siguiente formato:
{
"fs": "LAX",
"iata": "LAX",
"icao": "KLAX",
"faa": "LAX",
"name": "Los Angeles International Airport",
"street1": "One World Way",
"street2": "",
"city": "Los Angeles",
"cityCode": "LAX",
"stateCode": "CA",
"postalCode": "90045-5803",
"countryCode": "US",
"countryName": "United States",
"regionName": "North America",
"timeZoneRegionName": "America/Los_Angeles",
"weatherZone": "CAZ041",
"localTime": "2014-06-20T06:00:50.439",
"utcOffsetHours": -7,
"latitude": 33.943399,
"longitude": -118.408279,
"elevationFeet": 126,
"classification": 1,
"active": true,
"delayIndexUrl": "https://api.flightstats.com/flex/delayindex/rest/v1/json/airports/LAX?codeType=fs",
"weatherUrl": "https://api.flightstats.com/flex/weather/rest/v1/json/all/LAX?codeType=fs"
}
Esta fue exactamente la información que necesitaba para poder hacer mi función:
echo getTimezoneFromAirportCode("LAX"); // -7
Los datos están disponibles a través de la siguiente solicitud GET:
https://api.flightstats.com/flex/airports/rest/v1/json/all?appId=[appId]&appKey=[appKey]
[appId]
y [appKey]
se proporcionarán después de crear una cuenta de desarrollador de flightstats.com gratuita aquí: https://developer.flightstats.com/signup
Está confundiendo una "zona horaria" con una "compensación de zona horaria". No són la misma cosa. No puede simplemente solicitar el desplazamiento en una ubicación; también debería saber el tiempo específico en cuestión. No es válido preguntar "¿Cuál es la compensación de zona horaria para LAX"? Porque en el invierno será -8 mientras que en el verano será -7.
Puede preguntar "¿cuál es el desplazamiento en este lugar en este momento? ", Pero eso podría darle una respuesta diferente dependiendo de cuándo lo haga. Entonces, la fecha y la hora deben ser parte de la entrada.
Lo que realmente necesita saber en su lugar es que LAX
corresponde a la zona horaria IANA de America/Los_Angeles
. Estos códigos de zona horaria son entendidos por la API de fecha / hora de PHP y muchos otros sistemas.
Para hacer esto, debe tomar la latitud y la longitud de cada aeropuerto (que están disponibles en OpenFlights y en muchos otros lugares) y usar uno de los métodos que se describen aquí para buscar la zona horaria de IANA para esas coordenadas.
Asegúrese de leer también la wiki de la etiqueta de la zona horaria , especialmente las partes en la base de datos IANA, y la sección titulada "Zona horaria! = Compensación".
También tenga en cuenta que los detalles de la zona horaria que encontrará en la base de datos de OpenFlights (y algunos otros por ahí), no son muy precisos. Cuando se trata de las características específicas de las zonas horarias, solo debe confiar en la base de datos de la IANA y asegurarse de mantenerse actualizado.