Calculo de horas

1 resposta
J
public static long horarioCumprido(int usu, String data1, String data2, Connection Conexao){
       
        String dtIni = data1;
        String sql;
        long total = 0;
        
        String dataIni[] = data1.split("/");
        
        int diaIni = Integer.parseInt(dataIni[0]);
        int mesIni = Integer.parseInt(dataIni[1]);
        int anoIni = Integer.parseInt(dataIni[2]);
        
        SimpleDateFormat dtFormat = new SimpleDateFormat("dd/MM/yyyy");
        GregorianCalendar dt = new GregorianCalendar(anoIni, mesIni - 1, diaIni);
        
        while (!dtIni.equals(data2)){    
            try {
                dtIni = dtFormat.format(dt.getTime());
                dt.add(GregorianCalendar.DAY_OF_MONTH, 1);
                
                Statement st = Conexao.createStatement();
                sql = "SELECT dedao.horas_dia(" + usu + ",'" + dtIni + "')";
                ResultSet rs = st.executeQuery(sql);
                rs.next();
                total += toSeconds(rs.getString("horas_dia"));
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        }    
        return total;
    }
Ola pessoal desenvolvi esse codigo para retornar a soma de dois horarios, creio que o codigo possa ser melhorado mas como estou aprendendo a mecher com datas cheguei nisso ai. Porem eu preciso pegar esses segundos no final e transformar em hora e quando passar de um dia nao ficar 01 12:00:00 e sim 36:00:00 entende mas quando eu chamo o seguinte codigo ele transforma em dia. E possivel fazer essa configuracao utilizando algum metodo do proprio java do Gregorian ou Date. ou devo fazer manualmente multiplicando o dia por 24.
long teste = CalculaHora.horarioCumprido(Integer.parseInt(request.getParameter("funcionario"))
                      , dataini, datafim, c.conn);
              SimpleDateFormat formatter = new SimpleDateFormat("HH:mm:ss");  
              formatter.setTimeZone(TimeZone.getTimeZone("GMT"));  
              java.util.Date dtTeste = new java.util.Date(teste * 1000);

Obs: Quem tive sugestao de melhoria do codigo tbm aceito ehehhee
Obrigado

1 Resposta

furutani

Olá

Dica de como melhorar neste blog.

Criado 10 de abril de 2008
Ultima resposta 10 de abr. de 2008
Respostas 1
Participantes 2