В StackOverflow слишком много вопросов о разрешении часового пояса из местоположения. Эта вики сообщества - это попытка объединить все действительные ответы.
Пожалуйста, обновите мой ответ или добавьте свой, если считаете нужным.
Вопрос
Учитывая широту и долготу местоположения, как узнать, какой часовой пояс действует в этом месте?
В большинстве случаев мы ищем идентификатор часового пояса IANA / Olson, хотя некоторые службы могут возвращать только смещение UTC или какой-либо другой идентификатор часового пояса. Пожалуйста, прочитайте информацию тега часового пояса для деталей.
geolocation
timezone
latitude-longitude
Мэтт Джонсон-Пинт
источник
источник
"Europe/London"
идентификатор часового пояса базы данных часовых поясов IANA.Ответы:
Веб-сервисы определения местоположения часового пояса
Исходные данные о часовых поясах
Следующие проекты ранее были источниками данных о границах часовых поясов, но больше не поддерживаются.
Географическое положение часового пояса
Реализации, использующие данные построителя границ часового пояса
Реализации, использующие более старые данные tz_world
Библиотеки, которые вызывают один из веб-сервисов
Самостоятельные веб-сервисы
Другие идеи
Пожалуйста, обновите этот список, если вы знаете о других
Кроме того, обратите внимание, что подход ближайшего города может не дать «правильный» результат, только приближение.
Преобразование в зоны Windows
Большинство перечисленных методов будут возвращать идентификатор часового пояса IANA. Если вам нужно преобразовать в часовой пояс Windows для использования с
TimeZoneInfo
классом в .NET, используйте TimeZoneConverter библиотеку .Не используйте zone.tab
База данных tz содержит файл с именем
zone.tab
. Этот файл в основном используется для представления списка часовых поясов, из которых пользователь может выбирать. Он включает координаты широты и долготы для исходной точки для каждого часового пояса. Это позволяет создать карту с выделением этих точек. Например, см. Интерактивную карту, показанную на домашней странице момента и часового пояса .Хотя может показаться заманчивым использование этих данных для разрешения часового пояса по координатам широты и долготы, имейте в виду, что это точки, а не границы. Лучшее, что можно сделать, это определить ближайшую точку, которая во многих случаях не будет правильной.
Рассмотрим следующий пример:
Два квадрата представляют разные часовые пояса, где черная точка в каждом квадрате является эталонным местоположением, например, что можно найти в zone.tab. Синяя точка обозначает местоположение, для которого мы пытаемся найти часовой пояс. Ясно, что это местоположение находится в оранжевой зоне слева, но если мы просто посмотрим на самое близкое расстояние до контрольной точки, оно перейдет в зеленоватую зону справа.
источник
Как насчет этого решения для node.js https://github.com/mattbornski/tzwhere
И его аналог Python: https://github.com/pegler/pytzwhere
источник
Мы в Teleport только начали открывать наши API, и один из вариантов использования также предоставляет информацию о TZ для координат.
Например, можно запросить всю имеющуюся у нас информацию о TZ для координат следующим образом:
Это вернет следующее
Для примера, который я использовал ./jq для разбора JSON.
источник
Вот как вы можете использовать редактор сценариев Google, чтобы получить timezoneName и timeZoneId внутри gsheet.
Шаг 1. Получить ключ API для API часового пояса Google
Шаг 2. Создайте новый лист. Под меню «Инструменты» нажмите «Редактор сценариев». Добавьте следующий код:
Шаг 3. Сохраните и опубликуйте свою
getTimezone()
функцию и используйте ее, как показано на рисунке выше.источник
Вы можете использовать geolocator.js, чтобы легко получить часовой пояс и многое другое ...
Он использует API Google, которые требуют ключ. Итак, сначала вы настраиваете геолокацию:
Получить TimeZone, если у вас есть координаты:
Пример вывода:
Найдите, затем получите TimeZone и многое другое
Если у вас нет координат, вы можете сначала найти местоположение пользователя.
В приведенном ниже примере сначала будет использоваться API геолокации HTML5 для получения координат. Если он потерпит неудачу или будет отклонен, он получит координаты через поиск по Geo-IP. Наконец, он получит часовой пояс и многое другое ...
Пример вывода:
источник
https://en.wikipedia.org/wiki/Great-circle_distance
А вот хорошая реализация с использованием данных JSON: https://github.com/agap/llttz
источник
раскрытие: я являюсь автором докер-образа, описанного ниже
Я завернул https://github.com/evansiroky/node-geo-tz в очень простой докер-контейнер
Вы можете запустить Docker-контейнер с
Это предоставляет сервис поиска на вашем локальном хосте через порт 3000. Затем вы можете выполнить поиск по часовому поясу с помощью
источник
Попробуйте этот код для использования API часовых поясов Google из Java с текущим NTP Time Client и правильного преобразования UTC_Datetime_from_timestamp:
И используйте его с:
источник
Хорошо, вот короткая версия без правильного времени NTP:
И используйте его с:
источник
Если вы хотите использовать geonames.org, используйте этот код. (Но geonames.org иногда очень медленный)
И используйте его с:
источник
От гуппи:
Связанный метод
America/Anchorage.dst
изDstTzInfo
Америка / Анкоридж 'LMT-1 день, 14:00:00 STD
источник
Это действительно важно признать, что это более сложная проблема, чем многие подозревают. На практике многие из нас также готовы принять рабочий набор кода, который работает для «как можно большего числа случаев», где, по крайней мере, его фатальные проблемы можно идентифицировать и минимизировать коллективно. Поэтому я публикую это с учетом всего этого и духа ОП. Наконец, для практической пользы для тех, кто пытается преобразовать GPS в часовой пояс с конечной целью иметь чувствительный к местоположению временной объект (и, что более важно, чтобы повысить качество усредненных реализаций с помощью временных объектов, которые следуют из этой вики), здесь что я сгенерировал в Python (пожалуйста, не стесняйтесь редактировать):
источник
Есть несколько источников в Интернете, которые имеют данные геойсон для часовых поясов ( вот один , вот другой)
Используйте библиотеку геометрии для создания многоугольных объектов из координат геоджона ( shapely [python], GEOS [c ++], JTS [java], NTS [.net]).
Преобразуйте ваш lat / lng в точечный объект (однако ваша библиотека представляет это) и проверьте, пересекает ли он полигон часового пояса.
источник
используя широту и долготу получить часовой пояс текущего местоположения ниже код работал для меня
источник
Для тех из нас, кто использует Javascript и хочет получить часовой пояс из почтового индекса через API Google , вот один из методов.
Примечание: я понимаю, что почтовые индексы не являются уникальными в разных странах, поэтому, вероятно, это лучше всего подходит для использования в США.
источник
источник
Если вы предпочитаете избегать веб-службы, вы можете получить эту информацию из браузера следующим образом:
В моем текущем случае это печать:
Полная дата: 27.01.2014 16: 53: 37 Смещение UTC : UTC-3 Код страны Часовой пояс: BRT
Надеюсь, это может быть полезно.
источник