Теоретически можно по медианах считать, каждые 15 градусов +1 час. Практически так не прокатит, потому что административные округа могут использовать свое время, отличное от географического. В распределении зон никакой логики нет, соответственно нет и формулы.
Придется составить матрицу или бд с часовыми зонами (или их границами). Или использовать уже готовые сервисы, например
http://www.geonames.org/ (первая ссылка с гугла)