[RESOLVIDO] Como subtrair duas datas e obter a resposta em dias?

Boa Tarde

Estou com um problema , estou tentando obter a quantidade de dias quando comparo duas datas, é pra dias de locação

            Date entrada = new Date();
            String temp = datasaida.getText();

            SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
            Date dtsaida = new java.sql.Date(format.parse(temp).getTime());
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

            Date d3 = new Date(dtsaida.getTime() - entrada.getTime()); 
            totaldiarias.setText((d3).toString());

Só que ao invés de ser 5 dias a resposta é Mon Jan 05 03:33:22 BRT 1970

Existe alguma maneira simples de obter esses dias?

1 curtida

[code]Date entrada = new Date();
String temp = datasaida.getText();

SimpleDateFormat format = new SimpleDateFormat(“dd/MM/yyyy”);
Date dtsaida = new java.sql.Date(format.parse(temp).getTime());
SimpleDateFormat sdf = new SimpleDateFormat(“dd/MM/yyyy”);

Calendar c = Calendar.getInstance();
c.setTime(dtsaida.getTime() - entrada.getTime());
totaldiarias.setText( String.valueOf(c.get(Calendar.DAY_OF_MONTH)) );
[/code]

Isso resolve?

1 curtida
Calendar a = Calendar.getInstance();
a.setTime(new Date());//data maior

Calendar b = Calendar.getInstance();
b.set(2013, 3, 15);// data menor

a.add(Calendar.DATE, - b.get(Calendar.DAY_OF_MONTH));
System.out.println(a.get(Calendar.DAY_OF_MONTH));

Desta forma tbem vai te dar o resultado em dias.

Poxa legal funcionou obrigado, mais agora estou com outro problema, sem querer abusar mais já abusando

            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 
        
            Calendar dts = Calendar.getInstance();
            dts.setTime(new Date());//data retirada - maior
            
            Calendar dte = Calendar.getInstance();
            dte.set(2013, 3, 15);// data locação  - menor

            dts.add(Calendar.DATE, - dte.get(Calendar.DAY_OF_MONTH));
            
            totaldiarias.setText(sdf.format(dts.get(Calendar.DAY_OF_MONTH)));

è na linha 7, vc saberia me dizer como faço pra passar o meu jtextfield no lugar dessa data ai?

de qualquer modo obrigado desde já

os 3 valores são int, lembrando que o do meio é relativo ao mês e pela documentação o mês começa no zero(0) então quer dizer que janeiro é 0.
Faz tempo que não mexo para desktop, esse teu jtexfield devolve uma String? em qual formato?
se for assim dd/mm/yyyy
da pra fazer assim

String[] aux = jtextField.split("/");
int dia =Integer.parseInt(aux[0]); // igual ao dia
int mes =Integer.parseInt(aux[1]) - 1 ;// mes
int ano =Integer.parseInt(aux[2]); //ano

dte.set(ano, mes, dia);// data locação  - menor  

Muito Obrigado !!! me ajudou demais