---

Определение часового пояса по долготе с шагом 15°

Идея

  • Земля вращается на 360° за 24 часа → 360° / 24 = 15° на один часовой пояс.
  • Нулевой меридиан (UTC+0) проходит через Гринвич.
  • Каждый часовой пояс - это зона шириной примерно 15° долготы.
  • Для долготы lon можно вычислить часовой пояс так:
timezone_offset = int((lon + 7.5) // 15)

где +7.5 - смещение для округления к ближайшему поясу.

---

Пример кода

def timezone_by_longitude(lon):
    """
    Определяет часовой пояс по долготе с шагом 15 градусов.
    Возвращает смещение UTC в часах (целое число).
    """
    offset = int((lon + 7.5) // 15)
    # Ограничим смещение в диапазоне -12..+14 (максимальные UTC смещения)
    if offset  14:
        offset = 14
    return offset

def timezone_str(offset):
    """
    Форматирует смещение в строку вида UTC+3 или UTC-5
    """
    if offset == 0:
        return "UTC+0"
    elif offset > 0:
        return f"UTC+{offset}"
    else:
        return f"UTC{offset}"

# Пример использования
lon = 30.6173 
offset = timezone_by_longitude(lon)
print(f"Долгота: {lon}, Часовой пояс: {timezone_str(offset)}")

---

Пример вывода

Долгота: 37.6173, Часовой пояс: UTC+3

---

Особенности и ограничения

  • Такой метод даёт приблизительный часовой пояс.
  • В России и некоторых других странах реальные часовые пояса могут отличаться от географических зон.
  • Не учитывает переходы на летнее время и административные особенности.
  • Но зато работает автономно, быстро и без больших данных.

---

Расширение: можно добавить словарь с названиями часовых поясов по смещению

timezone_names = {
    -12: "UTC-12",
    -11: "UTC-11",
    -10: "UTC-10",
    -9: "UTC-9",
    -8: "UTC-8",
    -7: "UTC-7",
    -6: "UTC-6",
    -5: "UTC-5",
    -4: "UTC-4",
    -3: "UTC-3",
    -2: "UTC-2",
    -1: "UTC-1",
    0: "UTC+0",
    1: "UTC+1",
    2: "UTC+2",
    3: "UTC+3",
    4: "UTC+4",
    5: "UTC+5",
    6: "UTC+6",
    7: "UTC+7",
    8: "UTC+8",
    9: "UTC+9",
    10: "UTC+10",
    11: "UTC+11",
    12: "UTC+12",
    13: "UTC+13",
    14: "UTC+14",
}

print(f"Часовой пояс: {timezone_names[offset]}")

---

Итог

  • Для простоты и автономности - определяйте часовой пояс по долготе с шагом 15°.
  • Это быстро, не требует данных и библиотек.
  • Для России это не идеально, но даёт приближённый результат.

Если хотите - могу помочь подготовить готовую функцию с комментариями и тестами.

---
Answer from Perplexity: pplx.ai/share

[file-name 000121_2025-04-27_18-17-20.txt]