Duas vezes por ano, nos fusos que adotam horário de verão, acontece algo estranho com o relógio que a maioria dos softwares nunca leva em conta. Quando os relógios são adiantados, uma hora do horário local simplesmente não existe, então um timestamp como "2:30 AM" naquela data nunca ocorreu de fato. Quando os relógios são atrasados, uma hora acontece duas vezes, então "1:30 AM" ocorreu uma vez antes da mudança e outra depois, e um timestamp local puro, sem nenhuma outra informação, não consegue dizer a qual delas se refere.
Esse não é um caso extremo raro que só importa em usos exóticos. É um evento de calendário rotineiro, que se repete todo ano em todos os fusos que usam horário de verão, e ele quebra silenciosamente qualquer código que trate o horário local como sempre bem definido. Um sistema de agendamento que armazena "reservar para 1:45 AM" sem armazenar também a diferença de UTC no momento da reserva não consegue saber, meses depois, qual das duas 1:45 AM era a pretendida se a reserva cair na noite da transição.
A prática mais segura é armazenar timestamps em UTC em todo o sistema internamente e converter para o horário local apenas na exibição. O UTC não tem horário de verão nem ambiguidade, então, depois que um momento é registrado assim, ele continua correto independentemente do que aconteça depois com as regras do relógio local. Converta para o fuso horário local do usuário apenas no momento de mostrar a ele, usando as regras atuais daquele fuso para aquele momento específico, e é exatamente por isso que vale a pena usar uma consulta de fuso horário que aceite um instante específico, e não apenas um local, em vez de armazenar uma diferença em cache uma vez e reutilizá-la.
Os casos extremos que vale a pena testar explicitamente, se você constrói qualquer coisa que agende ou registre eventos, incluem: uma reserva feita para a hora inexistente durante uma transição em que o relógio é adiantado, um timestamp durante a hora repetida de uma transição em que o relógio é atrasado e um evento agendado cuja data atravessa uma transição entre o momento em que foi criado e o momento em que acontece. Nenhum deles é hipotético. Eles acontecem em um calendário fixo e previsível todo ano, e testá-los uma vez durante o desenvolvimento é muito mais barato do que depurar um chamado de suporte sobre uma reunião que parece ter se deslocado uma hora.
Se o seu sistema precisa da diferença correta para um momento específico, e não apenas do nome do fuso, solicite-a diretamente em vez de derivá-la de um valor em cache. A consulta de fuso horário da My Geocode aceita um momento específico e aplica as regras de horário de verão daquela data exata, então a diferença retornada está correta mesmo bem no limite de uma transição.
Um endereço no centro de uma cidade bem mapeada quase não diz nada sobre como o seu sistema lida com uma estrada rural, uma fronteira disputada ou uma consulta perto dos polos. Teste os casos difíceis de propósito.
Nem todo conjunto de dados com informações de localização de aparência pública pode ser usado legalmente dentro de um produto pago. Os termos de licenciamento, e não a disponibilidade técnica, costumam definir o limite real.
Quando uma consulta realmente não pode ser resolvida de forma confiável, não retornar nada é uma resposta melhor do que retornar um palpite disfarçado de fato. Veja o raciocínio por trás dessa escolha.