Ajuda com Data

Olá estou usando a importação > import java.util.Calendar

Minha duvida é: como eu faço para imprimir somente a data e fazer conta com ela!
Digo, eu tenho x data e quero comparar com a data atual e isso me retorna um valor inteiro de dias!
Obrigado!

Você quer poder descobrir a quantidade de dias entre uma data e outra? Se for fazer calculos desse tipo eu sugiro que use a JodaTime se for possível pra você, pois facilita muito a vida, rs. O código fica tão simples quanto isso:int days = Days.daysBetween(data1, data2).getDays();

[quote=brunokaue]Olá estou usando a importação > import java.util.Calendar

Minha duvida é: como eu faço para imprimir somente a data e fazer conta com ela!
Digo, eu tenho x data e quero comparar com a data atual e isso me retorna um valor inteiro de dias!
Obrigado![/quote]

O Calendar oferece esse manipulações com data.
Mas o que exatamente você quer ? Que tipo de comparação ?
Uma coisa é comparar, outra é executar uma operação aritmética.

Imprimir a data: pesquise por DateFormat e SimpleDateFormat.
Cálculos com datas: Calendar e GregorianCalendar e JodaTime ou muita paciência para converter em milissegundos e para o que precisar (anos, meses, dias, horas, minutos, segundos, etc)

Falando nisso, não é possível fazer um calculo preciso do número de dias, se não souber os meses em questão, certo?

Claro que se você dividir 365 por 12, você tem uma constante que pode usar, como uma média do mes, algo como 30.416666666666668.
Ou fazer da maneira mais “comum”, que é usar o 30.

Porém se for contar os dias entre 14/02/2012 e 14/03/2012 você teria 28 dias
Agora se for contar os dias entre 14/03/2012 e 14/04/2012 você teria 31 dias.

Portanto se existe uma maneira “genérica” de fazer esse cálculo, correto?

Estou fazendo meu projeto de locação. Então tenho que comprar datas para ter um retorno de dias ultrapassados(para locação de dvd), pois isso irá gerar multa.
Então tenho que ter um numero inteiro de dias para que isso ocorra!

Se for o que estou pensando é + ou - isso…


    int dia=0;// inicia a variavel dia com valor 0     
                 dia=Integer.parseInt(tf_prazo.getText());//faz a conversão  
              switch(dia)  
             {  
                case 1:dia=1;// se o usuario digitar quantidade de dias 1  
                   data.add(Calendar.DAY_OF_MONTH, 1);// acrescenta um dia   
                   lb_datareceb.setText(format.format(data.getTime()));// label recebe a data atual mais um dia  
                break;  
                case 2:dia=2;// se o usuario digitar quantidade de dias 2  
                    data.add(Calendar.DAY_OF_MONTH, 2);// acrescenta dois dias   
                    lb_datareceb.setText(format.format(data.getTime()));// label recebe a data atual mais dois dias  
                break;  
                case 3:dia=3;  
                  data.add(Calendar.DAY_OF_MONTH, 3);  
                  lb_datareceb.setText(format.format(data.getTime()));  
                break;  

Acho que a lógica que você precisa é um pouco diferente, pense nela… :wink:

http://www.botecodigital.info/java/manipulando-datas-em-java/

A data esta no meu banco de dados, eu preciso pega-la e fazer um conta com o dia atual, para tal me dar um dia e eu multiplicá-lo pela multa!
Mas a data está assim > Wed Jun 13 10:45:51 BRT 2012
Como eu faço para só pegar em formato de “dd/MM/yyy” para depois puxar pelo banco de dados e fazer a conta?
Essa e minha duvida, praticamente só falta isso para terminar meu projeto, conta com data! e é amanha minha apresentação!

[quote=brunokaue]A data esta no meu banco de dados, eu preciso pega-la e fazer um conta com o dia atual, para tal me dar um dia e eu multiplicá-lo pela multa!
Mas a data está assim > Wed Jun 13 10:45:51 BRT 2012
Como eu faço para só pegar em formato de “dd/MM/yyy” para depois puxar pelo banco de dados e fazer a conta?
Essa e minha duvida, praticamente só falta isso para terminar meu projeto, conta com data! e é amanha minha apresentação![/quote]
Você chegou a ver o link do JodaTime que eu passei? Ta ali o quão simples é fazer isso com o JodaTime, uma linha de código.

Se for para formatar pode ser assim…

Vai usar esse import…


    import java.util.Calendar.*;  

    Calendar data = Calendar.getInstance();     
    SimpleDateFormat format=new SimpleDateFormat("dd/MM/yyyy");  
    String h=format.format(data.getTime());  

Use a busca do forum, pode ser mais rapido do que ficar esperando uma resposta… :wink:

[quote=Anime]Se for para formatar pode ser assim…

Vai usar esse import…

import java.util.Calendar.*;
[/quote]
Não seria somente import java.util.Calendar Sem o * ?