Usar um código de fuso horário não é uma boa ideia. Diferentes fusos horários alteram o horário de verão em datas diferentes. Idealmente (IMO) você deve usar códigos Olsen como "Europa/Londres" se as plataformas relevantes que você estiver usando puderem lidar com elas. Isso deve permitir que você preveja quando qualquer instante específico ocorre para o fuso horário do usuário.
Lamento que isso não esteja realmente ajudando com a função que você precisa escrever, mas deve ajudá-lo a evitar ir na direção errada.
(Falo por experiência amarga - os fusos horários são uma dor no pescoço.)