Cada país tem suas regras para o início e fim de horário de verão. Para aplicações que rodam em vários países, algumas questões devem ser levadas em conta.
No Brasil a regra diz que o horário de verão começa no terceiro domingo de outubro, às zero (0) horas onde é acrescentado uma hora, e termina no terceiro domingo do mês de fevereiro do ano seguintes às zero (0) horas. Se o final do horário de verão no Brasil coincidir com o final de semana do carnaval, o término para o final do horário de verão é transferido para o domingo seguinte. Deve-se levar em conta também, que não é em todos os Estados que tem horário de verão, atualmente no Brasil vale para 11 Estados e o Distrito Federal.
Nos Estados Unidos o horário de verão começa no segundo domingo de março às duas (2) horas e termina no primeiro domingo de novembro às duas horas (2). No Egito começa na última sexta do mês de abril, e termina na última quinta-feira de setembro, mas pode acabar antes, conforme o início do Ramadan. Na Nova Zelândia começa no primeiro domingo de abril às 03:45, e termina no último domingo de setembro às 02:45.
Para criar as regras deve-se levar em conta não somente o país, mas também as regiões (Estados) que a regra é válida, dia e hora de início e fim.
- Em alguns países o horário de verão começa e termina no mesmo ano, outros começa no final do ano e termina no início do ano seguinte;
- Os horários de início e fim variam entre países, em um mesmo país pode começar num horário e terminar em outro horário diferente;
- O dia da semana para início e fim são fixos, mas existem exceções;
- Num mesmo país pode ter regiões que usam o horário de verão e outras não;
- O tempo adicionado ao horário de verão não é uma hora para todos os países.
Montando uma estrutura básica para controlar o horário de verão teríamos:
AT-MSDHM-MSDHM
A - Ano que o horário de verão é válido. 00 Válido para todos os anos.
T - Tempo em minutos para acrescentar no horário de verão.
M - Mês de início/fim do horário de verão.
S - Dia da semana de início/fim do horário de verão. 0 - Domingo... 6 - Sábado.
D - Número do dia da semana de início/fim do horário de verão.
H - Hora do início/fim do horário de verão.
M - Minutos do início/fim do horário de verão.
Exemplo: 2012, 60 [10, 0, 3, 0, 0] - [2, 0, 3, 0, 0]
A T M S D H N M S D H NA - Ano que o horário de verão é válido. 00 Válido para todos os anos.
T - Tempo em minutos para acrescentar no horário de verão.
M - Mês de início/fim do horário de verão.
S - Dia da semana de início/fim do horário de verão. 0 - Domingo... 6 - Sábado.
D - Número do dia da semana de início/fim do horário de verão.
H - Hora do início/fim do horário de verão.
M - Minutos do início/fim do horário de verão.
Exemplo: 2012, 60 [10, 0, 3, 0, 0] - [2, 0, 3, 0, 0]
Neste exemplo o horário de verão começa no ano de 2012, no mês de outubro no terceiro domingo às 0 (zero) horas, e termina em 2013 no mês de fevereiro no terceiro domingo às 0 (zero) horas. Neste caso o ano de fim é o seguinte, pois o mês 02 (fevereiro) final é inferior ao mês 10 (outubro) inicial.
Em países onde tem variação de um ano para outro, nas datas de início e fim, pode-se usar mais de um registro. Caso a regra seja válida para todos os anos, um único registro é suficiente, basta usar 00 (zero) no ano para indicar ano fixo.
É fundamental antes de pensar na solução, entender o problema, pois não é suficiente fazer uma solução simples se ela não resolve o problema, uma solução desenvolvida pela metade pode agravar o problema. Demonstre o problema para que a equipe possa debater e chegar juntos a uma solução.


