В дополнение к проблемам потока OP, еще одно соображение:
"смещение часового пояса от строки имени часового пояса" в целом недостаточно, так как смещение отличается в зависимости от данных / времени в течение года.
Даже если в выбранной зоне не происходит ежегодных корректировок дневного света, смещение может изменяться в зависимости от истории зоны.
long offset(tz_name)
недостаточно, long offset(tz_name, time_t t)
необходимо.