Как получить timezone по координатам в php

Как получить tz в php используя сервисы YANDEX или что-то другое, но бесплатное


Ответы (1 шт):

Автор решения: Vladislav

Встала задача начать получать tz по коордам и чтобы это было одно из 2х
Получать TZ апишками Yandex, но у них нет http апи под эту задачу(геокодер не говорит tz)
или
Получать tz из чего-то внешнего и бесплатного

Намучавшись пришёл к решению в pyhton т.к. там есть корректно работающий timezonefinder и считаю, что нет ничего плохого в том, чтобы в проект на php поместить простенький скрипт на py в корень проектавведите сюда описание изображения

Мини инструкция как прийти к этому:

  1. Установка python:
sudo apt update
sudo apt install python3 python3-pip

2.Ставим либу:

pip3 install timezonefinder
  1. Пишем скрипт определяющий 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()
  1. Делаем скрипт исполняемым:
chmod +x get_timezone.py
  1. Тестим скрипт:
./get_timezone.py 37.7749 -122.4194

*Выводвведите сюда описание изображения
6. Вызов скрипта из php (путь к скрипту пропишите свой)

shell_exec(__DIR__.'/get_timezone.py 37.7749 -122.4194');

введите сюда описание изображения
Я очень надеюсь, что помог кому-то из вас и не закидаете дизами, это решило мою проблему и довольно легко

→ Ссылка