É interessante ter uma API ou biblioteca dedicada à isso, pois é impossível advinhar quando um computador tá no horário de verão ou não somente com códigos.
Eu diria para sempre usar uma API de datas, quando disponível. Claro que muitas linguagens não ajudam por não terem uma API decente, mas ainda sim é melhor do que tentar fazer tudo manualmente. Existem muitos corner cases e "pegadinhas" difíceis de tratar (muitas são até difíceis de sequer imaginar que podem acontecer).
No caso dos fusos horários e do histórico de alterações do horário de verão, é um trabalho hercúleo e infrutífero (e muito propenso a erros) tentar rastrear tudo manualmente. Hoje a maioria dos sistemas usa os dados do IANA Time Zone Database, e bem, veja na lista de discussão deles como é um trabalho insano manter todas essas informações em sincronia com as constantes alterações feitas no mundo todo.
Datas é um caso em que vale muito a pena ter uma API dedicada. Tem detalhes demais pra tratar, e mesmo as melhores bibliotecas não conseguem cobrir todos os aspectos.