Lição 3
UTC, horário local e fusos horários
Relógio de parede vs instante, fusos IANA e mudanças de horário de verão.
Um timestamp Unix identifica um instante — um ponto na linha do tempo global. UTC e horário local são formas diferentes de rotular esse instante para humanos.
UTC
Tempo Universal Coordenado (UTC) é a escala de referência sem offsets sazonais. Quando logs dizem “todos os horários em UTC”, comparações entre regiões não exigem adivinhar regras locais.
Strings ISO terminadas em Z significam “Zulu” = UTC, ex.: 2024-01-15T08:30:00Z.
Horário local de parede
O relógio do notebook mostra horário civil local — o tempo no seu fuso, incluindo ajustes de horário de verão. Dois desenvolvedores olhando o mesmo timestamp podem escrever leituras diferentes:
2024-07-01 09:00emEurope/Berlin2024-07-01 15:00emAsia/Shanghai
Ambos podem descrever o mesmo instante.
Nomes de fuso IANA
Sistemas usam nomes como America/New_York ou Asia/Tokyo (banco de fusos IANA). Esses nomes codificam mudanças históricas de offset — prefira-os a rótulos fixos “UTC+8” ao agendar eventos futuros atravessando limites de horário de verão.
Offset sozinho não é um fuso. UTC+8 em um dia pode não dizer o que acontece quando regras de DST diferem por país.
Armazenagem vs exibição
Boa prática em backends:
- Armazene instante em UTC (timestamp ou
TIMESTAMPTZ) - Converta para fuso local só na UI ou relatórios por usuário
Resumo
Timestamps guardam quando; fusos decidem como você lê o relógio. Sempre saiba em qual camada você está olhando.