Как получить timezone по координатам в php
Как получить tz в php используя сервисы YANDEX или что-то другое, но бесплатное
Ответы (1 шт):
Встала задача начать получать tz по коордам и чтобы это было одно из 2х
Получать TZ апишками Yandex, но у них нет http апи под эту задачу(геокодер не говорит tz)
или
Получать tz из чего-то внешнего и бесплатного
Намучавшись пришёл к решению в pyhton т.к. там есть корректно работающий timezonefinder и считаю, что нет ничего плохого в том, чтобы в проект на php поместить простенький скрипт на py в корень проекта
Мини инструкция как прийти к этому:
- Установка python:
sudo apt update
sudo apt install python3 python3-pip
2.Ставим либу:
pip3 install timezonefinder
- Пишем скрипт определяющий tz (я назвал его get_timezone.py):
#!/usr/bin/env python3
import sys
from timezonefinder import TimezoneFinder
import json
def main():
if len(sys.argv) != 3:
print("Usage: get_timezone.py <latitude> <longitude>")
sys.exit(1)
try:
latitude = float(sys.argv[1])
longitude = float(sys.argv[2])
except ValueError:
print("Invalid input. Latitude and longitude must be numbers.")
sys.exit(1)
tf = TimezoneFinder()
timezone_str = tf.timezone_at(lat=latitude, lng=longitude)
result = {
"latitude": latitude,
"longitude": longitude,
"timezone": timezone_str
}
print(json.dumps(result))
if __name__ == "__main__":
main()
- Делаем скрипт исполняемым:
chmod +x get_timezone.py
- Тестим скрипт:
./get_timezone.py 37.7749 -122.4194
*Вывод
6. Вызов скрипта из php (путь к скрипту пропишите свой)
shell_exec(__DIR__.'/get_timezone.py 37.7749 -122.4194');
Я очень надеюсь, что помог кому-то из вас и не закидаете дизами, это решило мою проблему и довольно легко