Explicação sobre o Calendar

Aconteceu algo comigo que eu não entendi o porque, não achei nada no google que mencionasse isso, vou explicar a situação:

Tenho um período de datas, no caso que eu peguei o acontecido foi de 23/01/2016 a 17/07/2017.
Eu passo um parâmetro para um método que vai dizer como esse período deve ser separado (dia, semana, mes, trimestre, semestre e ano).
Tudo funcionando corretamente, ou quase, notei que na separação diária, faltava o ultimo dia na minha lista.
No meu while, eu comparo por milissegundos, (while (inicio.getTimeinMillis() <= termino.getTimeInMillis())), talvez nao seja o mais correto, mas ate ai tudo bem, e no final do while eu adiciono um dia no calendar inicio (inicio.add(Calendar.DATE, 1)).

Antes de chegar na condição do while eu zero hora, minuto, segundo e milissegundo de inicio e termino.

Aqui é que vem a bizarrice, quando é adicionado um dia, passando do dia 12/10/2016 para 13/10/2016, é adicionado também 1 hora a mais, passando de 12/10/2016 00:00:00.000 para 13/10/2016 01:00:00.000

Não consigo entender o porque disso, imagino eu que seja por conta das 6 horas a mais de cada ano, mas não achei nada que confirmasse ou não isso, e também não encontrei nada que me explicasse essa 1 hora.

Alguém saberia me explicar?

Algo a ver com horário de verão que é trocado entre esse período?

Na verdade deveria estar “faltando” uma hora… mas vai saber … tem q avaliar certinho… mas é muita coincidência estarmos falando de 1 hora, e o seu intervalo estar entre a troca do horário de verão…

Da uma pesquisada nisso… :wink:

1 curtida

Verdade cara, tinha pensado nas 6 horas “extras” do ano, mas não pensei nessa troca de horário… vlw