estou precisando fazer com que uma data vá de uma à outra de 6h em 6h.
ex: 2004-08-10 12:00:00 ir até 2004-08-20 12:00:00
fiz um método que faz isso pra mim.
método…
private void setDate( String min, String max ) {
DecimalFormat df = new DecimalFormat( "00" );
int hora = Integer.parseInt( min.substring( 11, 13 ) );
int dia = Integer.parseInt( min.substring( 8, 10 ) );
int mes = Integer.parseInt( min.substring( 5, 7 ) );
int ano = Integer.parseInt( min.substring( 0, 4 ) );
Calendar calendar = Calendar.getInstance();
calendar.set( ano, mes, dia, hora, 0, 0 );
////cria data no formato aaaa-mm-dd hh:mm:ss
String dataObservadaBD = calendar.get( calendar.YEAR ) + "-" + df.format( calendar.get( calendar.MONTH ) ) + "-" + df.format( calendar.get( calendar.DATE ) ) + " " + df.format( calendar.get( calendar.HOUR_OF_DAY ) ) + ":00:00";
while( dataObservadaBD.compareTo( max ) <= 0 ) {
System.out.println( dataObservadaBD + " <= " + max );
calendar.add( calendar.HOUR_OF_DAY, 6 );
////cria data no formato aaaa-mm-dd hh:mm:ss
dataObservadaBD = calendar.get( calendar.YEAR ) + "-" + df.format( calendar.get( calendar.MONTH ) ) + "-" + df.format( calendar.get( calendar.DATE ) ) + " " + df.format( calendar.get( calendar.HOUR_OF_DAY ) ) + ":00:00";
}
}
a saída desse código para entrada:
min -> 2004-09-09 00:00:00
max ->2004-09-16 00:00:00
2004-09-09 00:00:00 <= 2004-09-16 00:00:00
2004-09-09 06:00:00 <= 2004-09-16 00:00:00
2004-09-09 12:00:00 <= 2004-09-16 00:00:00
2004-09-09 18:00:00 <= 2004-09-16 00:00:00
2004-09-10 01:00:00 <= 2004-09-16 00:00:00
2004-09-10 07:00:00 <= 2004-09-16 00:00:00
2004-09-10 13:00:00 <= 2004-09-16 00:00:00
2004-09-10 19:00:00 <= 2004-09-16 00:00:00
2004-09-11 01:00:00 <= 2004-09-16 00:00:00
2004-09-11 07:00:00 <= 2004-09-16 00:00:00
2004-09-11 13:00:00 <= 2004-09-16 00:00:00
2004-09-11 19:00:00 <= 2004-09-16 00:00:00
2004-09-12 01:00:00 <= 2004-09-16 00:00:00
2004-09-12 07:00:00 <= 2004-09-16 00:00:00
2004-09-12 13:00:00 <= 2004-09-16 00:00:00
2004-09-12 19:00:00 <= 2004-09-16 00:00:00
2004-09-13 01:00:00 <= 2004-09-16 00:00:00
2004-09-13 07:00:00 <= 2004-09-16 00:00:00
2004-09-13 13:00:00 <= 2004-09-16 00:00:00
2004-09-13 19:00:00 <= 2004-09-16 00:00:00
2004-09-14 01:00:00 <= 2004-09-16 00:00:00
2004-09-14 07:00:00 <= 2004-09-16 00:00:00
2004-09-14 13:00:00 <= 2004-09-16 00:00:00
2004-09-14 19:00:00 <= 2004-09-16 00:00:00
2004-09-15 01:00:00 <= 2004-09-16 00:00:00
2004-09-15 07:00:00 <= 2004-09-16 00:00:00
2004-09-15 13:00:00 <= 2004-09-16 00:00:00
2004-09-15 19:00:00 <= 2004-09-16 00:00:00
repare que da linha 4 para a linha 5 ele somou 7h ao inves de 6h.
não entendi e até agora não consegui encontrar o erro.
em nenhum momento eu acrecento 7h, somente 6h:
calendar.add( calendar.HOUR_OF_DAY, 6 );
alguém sabe me explicar porque isso acontece e se tem uma solução?
valews!!