Мне нужно иметь возможность вычислять различия между двумя значениями данных / времени, которые представляют моменты в (потенциально) двух разных географических точках.
Каждое входное значение, которое я имею, является кортежем следующего:
- Значение даты / времени без смещения часового пояса, например,
6:54 AM, 12/3/2005
.
- Значение широты / долготы (например,
-33.8704, 151.1938
), описывающее местоположение определенного времени.
Из любой комбинации двух входных значений мне нужно вычислить разницу во времени (это могут быть минуты, дни, годы и т. Д.). Для начала мне нужно:
- Нормализовать каждое из входных значений в соответствующее время по Гринвичу (или Зулу). Я полагаю, что это можно сделать путем преобразования значений широты / долготы в часовой пояс . После получения соответствующего часового пояса мне необходимо учесть разницу в летнем времени в соответствии с указанной датой , чтобы определить точное время.
- После нормализации значений времени вычисление разницы становится тривиальным.
Может кто-нибудь подсказать, пожалуйста, как я могу:
- Преобразование пары lat / long в часовой пояс и
- Определяет смещение летнего времени для данного часового пояса и даты.
Я предполагаю, что мне нужна некоторая функция для (1) и база данных значений для (2) , но я не знаю, где я могу получить их, или если они свободно доступны.
Другие ограничения:
- Я бы хотел программное обеспечение на Java или .Net (поскольку мое программное приложение может использовать плагины, написанные на любом из них) и
- Мне бы очень хотелось, чтобы все обработки были локальными . Мне известно, что существует несколько веб-сервисов для вычисления часового пояса для пары широта / долгота (как обсуждалось в этом вопросе Stackoverflow , например, Geonames.org или DRTEngine), но с учетом объема данных, которые я Я не хочу полагаться на сторонние веб-сервисы или использовать их для каждой имеющейся у меня точки данных, поэтому я бы предпочел «бесплатное» программное обеспечение и локальный доступ ко всей необходимой информации.
ОБНОВЛЕНИЕ : Спасибо всем, кто предоставил ответы до сих пор. В настоящее время я пытаюсь решить эту проблему, используя данные GeoNames и выполняя расчет ближайшего соседа, чтобы определить часовой пояс по широте / долготе, и сосредоточусь на использовании Joda Time и связанной с ним последней база данных tz для вычисления смещения летнего времени для определенных дат.