Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Deise Vicky

[Resolvido] Problema em operações com datas

Recommended Posts

Pessoal, estou fazendo um trabalho pra faculdade em java, e em determinado momento preciso pegar uma data, somar x dias e depois compará-la com outra para determinar quantos dias de diferença tem entre uma e outra.

Explicando melhor o contexto: Tenho uma biblioteca. Quando o cara faz um empréstimo eu armazeno a data atual. Quando o cara devolve o livro, devo verificar se ele entregou com atraso para cobrar multa por dia de atraso, por isso a necessidade de somar datas e depois compará-las.

Tentei da seguinte forma:

 

Date dt = new Date();
Calendar c = new Calendar.getInstance();
c.setTime(dt);
c.add(Calendar.DAY_OF_MONTH, 7);
Ststem.out.println("Data somada: " + c.getTime());

 

Até aqui tudo bem, consigo somar a data.

Só que quando eu imprimo ela, fica tipo assim: Sun Mar 20 09:40 2011 (não lembro se é bem esse os valores, pois não tenho acesso ao meu ex. agora)

Tentei usar a classe SimpleDateFormat pra formatar a data somada mas não rolou, sempre dá erro.

 

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
sdt.format(c.getTime());

 

Tentei também usar o compareTo da classe Calendar, mas não rolou também....

Alguém tem algum exemplo?

 

Desde já agradeço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao ficou muito claro o que deseja, formatar a impressao? Ou realizar algum tipo de comparacao? Poste sempre que mesangem de erro esta recebendo!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa era só dar uma pesquisada no google que vinha no primeiro resultado ^^. Eis a solução mamada pra você :lol:

 

public class testeDatas {

   public static void main(String[] args) throws ParseException{
       Date d = new Date();
       d = new SimpleDateFormat("dd/MM/yyy").parse("10/12/2011");

       Date d2 = new Date();
       d2 = new SimpleDateFormat("dd/MM/yyy").parse("12/12/2011");

       Calendar c = new GregorianCalendar();
       Calendar c2 = new GregorianCalendar();

       Long dias, tm1, tm2;

       c.setTime(d);
       c2.setTime(d2);

       tm1 = c.getTimeInMillis();
       tm2 = c2.getTimeInMillis();

       dias = (((((tm2 - tm1)/24)/60)/60)/1000);

       System.out.println(dias);
   }
}

 

é um exemplo bem rude e básico sem qualquer refinamento, você pode deixar este código acima bem mais legível e otimizado, mas agora basta você atentar e descobrir ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa era só dar uma pesquisada no google que vinha no primeiro resultado ^^. Eis a solução mamada pra você :lol:

 

public class testeDatas {

   public static void main(String[] args) throws ParseException{
       Date d = new Date();
       d = new SimpleDateFormat("dd/MM/yyy").parse("10/12/2011");

       Date d2 = new Date();
       d2 = new SimpleDateFormat("dd/MM/yyy").parse("12/12/2011");

       Calendar c = new GregorianCalendar();
       Calendar c2 = new GregorianCalendar();

       Long dias, tm1, tm2;

       c.setTime(d);
       c2.setTime(d2);

       tm1 = c.getTimeInMillis();
       tm2 = c2.getTimeInMillis();

       dias = (((((tm2 - tm1)/24)/60)/60)/1000);

       System.out.println(dias);
   }
}

 

é um exemplo bem rude e básico sem qualquer refinamento, você pode deixar este código acima bem mais legível e otimizado, mas agora basta você atentar e descobrir ^^

 

OK, vou tentar utilizar o seu exemplo. Valeu!

 

Só para deixar mais claro, eu não preciso apenas formatar a data para imprimir na tela, eu tenho que somar x dias e armazenar essa data em um objeto, o qual tem um atributo tipo Date.

 

De qualquer forma obrigada pelas respostas...vou tentar resolver e depois posto aqui no fórum.

 

Thanks!

Compartilhar este post


Link para o post
Compartilhar em outros sites

O resultado final é a quantidade de dias apenas. Se você utilizar o exemplo acima, você obterá "2", o format que eu fiz foi apenas para atribuir a data ao valor Date.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui resolver o problema. Fiz da seguinte forma:

 


Calendar c = new GregorianCalendar(); //antes Calendar recebia Calendar.getInstance();

Date dtToday = new Date();
Date dtAux;

c.setTime(dtToday);
c.add(Calendar.DAY_OF_MONTH, 7);

dtAux = c.getTime();

 

Dessa forma deu certo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.