DUVIDA: Limitação de datas

4 respostas
carlos_maia

Ola, alguem poderia me ajudar
Estou com o seguinte problema, eu preciso de uma validação que ao digitar uma data inicial e uma data final, mostre a mensagem se esta no periodo de um ano.
Por exemplo:
Se digitar DT_INICIAL= 10/10/2007 e 10/10/2008 tem q mostrar a mensagem q esta no periodo de 1 ano.

Abraços

4 Respostas

DavidUser

AAAAAAAAAAAAAAAAFFFFFFFFFFFFFFFFFFFFFFF

cara use o splint para quebrar a data em arrays converta e crie um código que calcule o tempo em dias meses e anos, vou tentar faze um rápido agorinha.

rodrigo.ferreira

Boa tarde!

Faça algo assim:

public static void main(String[] args) {  
           
         // data atual  
         Calendar dataAtual = Calendar.getInstance();   
           
         // data desejada  
         // 31 de julho de 2009 | janeiro = 0 / dezembro = 11          
         Calendar dataDesejada = Calendar.getInstance();  
         dataDesejada.set(2009, 6, 31); // atribui a data  
   
         // descobrir quantos dias de diferença entre a data desejada  
         // isso desejavelmente deve ser quebrado num outro método, ou classe....
         // e a data atual  
         Integer difDias = 0;  
         while ( dataAtual.before(dataDesejada) ) { // verifica se a data atual é menor que a data desejada  
               
             // incrementar qtde de dias  
             difDias++;
               
             // incrementar um dia da semana da data atual...  
             // poderia ser dia mês, do ano... etc...   
             // para remover valores, basta colocar o operador "-" no segundo parâmetro  
             dataAtual.add(Calendar.DAY_OF_WEEK, 1);   
   
         }  
         
         if ( difDias > 365 ) {
             System.out.println("A diferença é MAIOR que 1 ano" );  
         } else {
             System.out.println("A diferença é MENOR que 1 ano" );  
         }

           
     }

Abraço,

Visite o Blog do Perereca: http://www.blogdoperereca.blogspot.com

renanreismartins

cara use a joda time http://joda-time.sourceforge.net/

abrassssssssss

DavidUser
ta ai minha classe mandei imprimir diversos dados da contrução para seu entendimento ele só mostra a parte que lhe interessa quando a quantidade de dias é menor que a de um ano ela não aparece:
package Tutorials;

import java.util.Calendar;
import java.util.concurrent.ExecutionException;
import javax.swing.JOptionPane;

class Data{
    int dia;
    int mes;
    int ano;

    boolean DataInvalida(){
        return(dia>30 || mes>12 || ano>2009 || ano<1800 || mes<1 || dia<1);
    }
}

public class VerificacaoDeAno {
    public static void main(String[]args){
        Data inicio=new Data();
        Data fim=new Data();
        String inicialPanel=(JOptionPane.showInputDialog("Insira a data inicial","dd/mm/aaaa"));
        String finalPanel=(JOptionPane.showInputDialog("Insira a data final","dd/mm/aaaa"));
        try{
        inicio.dia=Integer.parseInt(inicialPanel.split("/")[0]);
        inicio.mes=Integer.parseInt(inicialPanel.split("/")[1]);
        inicio.ano=Integer.parseInt(inicialPanel.split("/")[2]);
        fim.dia=Integer.parseInt(finalPanel.split("/")[0]);
        fim.mes=Integer.parseInt(finalPanel.split("/")[1]);
        fim.ano=Integer.parseInt(finalPanel.split("/")[2]);
        }catch(Exception e){
            System.err.println("Formato de data inválido");
        }
//controle de data
    if(inicio.DataInvalida())System.err.println("Data inicial inválida");
    if(fim.DataInvalida())System.err.println("Data final inválida");
    if(inicio.ano>fim.ano)System.err.println("A data inicial é menor que a final");
      if((inicio.DataInvalida()==false) && (fim.DataInvalida()==false) && (inicio.ano<fim.ano)){
        int diasIN = 0,diasFI = 0;
        diasIN+=inicio.dia;
        diasIN+=inicio.mes*30;
        diasIN+=inicio.ano*360;
        diasFI+=fim.dia;
        diasFI+=fim.mes*30;
        diasFI+=fim.ano*360;
        int diferenca=diasFI-diasIN, anos = 0;

        while(diferenca>=360){
            anos++;
            diferenca-=360;
        }

        System.out.println("di" +
                "asIN: "+diasIN+"\tdiasFI: "+diasFI+"\nDiferença: "+(diasFI-diasIN)+"\tAnos: "+anos);
      }
      }
}
Criado 25 de maio de 2009
Ultima resposta 25 de mai. de 2009
Respostas 4
Participantes 4