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
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.
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
cara use a joda time http://joda-time.sourceforge.net/
abrassssssssss
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:
[code]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.mes30;
diasIN+=inicio.ano360;
diasFI+=fim.dia;
diasFI+=fim.mes30;
diasFI+=fim.ano360;
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);
}
}
}
[/code]