Может можно и проще сделать, но если надо пояс числом, то монжо так
from datetime import datetime, timedelta, timezone
import time
# Сначала находим смещение локального времени по UTC в часах
delta = -time.timezone//3600
# Потом прибавляем к нашему локальному поясу разницу и передаем это в таймзону
offset = timedelta(hours=delta+difference)
tz = timezone(offset)
# получаем время с учетом таймзоны
now = datetime.now(tz=tz)
Соответственно, все даты, время и дни недели будут сами пересчитаны, поэтому можно удалить все блоки if