Atribuindo datas manualmente!

5 respostas
FabinhoGil

ola pessoal!!! estou com um probleminha e penso que vcs posam me ajudar a resolver!

tenho uma classe Funcionario mas um de seus atributos é a data de entrada,
então eu fiz uma classe para data de entrada e criei um new para ela na classe funcionario,
mas a data de entrada e feita manualmente, e digitada atravez de um metodo e devolvida formatada para a classe funcionario!!
eu sei que existe varios geitos de lidar com datas no java!!
mas desta vez eu quis fazer manualmente, e ate ai esta funcionando perfeitamente, mas eu so tenho uma “preocupação”
nao tem bloqueio algum se o usuario quiser atribuir uma data do tipo 31/02/2013, ou algo ate mais absurdo como 98/67/-3987,
minha classe e esta:

public class DataEntrada{
	private int dia;
	private int mes;
	private int ano;

	public void adicionar(int d, int m, int a){
		d = this.dia;
		m = this.mes;
		a = this.ano;
	}

	public void formatada(){
		System.out.printf("Data de entrada: %d/%d/%d%n", dia, mes, ano);
	}
}

se algem puder ajudar,
talves modificando o metodo adicionar?
ou entao criando um novo metodo do tipo validarData ou sei la???
desde ja muito obrigado :smiley:

5 Respostas

willianxwillian

Cara, utiliza uma condição IF para o dia, mes e ano. Por exemplo:

public class DataEntrada{  
    private int dia;  
    private int mes;  
    private int ano;  
  
    public void adicionar(int d, int m, int a){  
        if(d > 0 && d <= 31){
            dia = d;
        }else{
            System.out.println("Dia inválido!");
        }
        if(m > 0 && m <= 12){
            mes = m;
        }else{
            System.out.println("Mes inválido!");
        } 
        if(a >= 1900){
            ano = a;
        }else{
            System.out.println("Ano inválido!");
        }
    }  
    public void formatada(){  
        System.out.printf("Data de entrada: %d/%d/%d%n", dia, mes, ano);  
    } 
}

obs: no seu código você está atribuindo uma variável de classe aos parâmetros do método da classe, o processo é o inverso como descrevi no código acima.

FabinhoGil

mais e em fevereiro que tem 28 dias? e tbm nao e tds meses que tem 31…
eu tbm estou tentando aqui mas minha ideia e de outra forma!
fazer um metodo que valida a data, ai este metodo sera acessado pelo construtor do objeto funcionario!
se a data nao for valida o funcionario nao é registrado!

jeffev

Teste assim, fica mais facil:

public boolean dataOK(String data) {  
boolean retorno = true;  
  
SimpleDateFormat f = new SimpleDateFormat("dd/MM/yy");  
  try {  
      f.parse(data);  
  } catch (ParseException e) {  
     retorno = false;  
  }  
return retorno;  
}

Achei nesse post aqui: http://www.guj.com.br/java/126029-resolvido---verificar-se-e-uma-data-valida

willianxwillian

FabinhoGil:
mais e em fevereiro que tem 28 dias? e tbm nao e tds meses que tem 31…
eu tbm estou tentando aqui mas minha ideia e de outra forma!
fazer um metodo que valida a data, ai este metodo sera acessado pelo construtor do objeto funcionario!
se a data nao for valida o funcionario nao é registrado!

Minha solução foi mais pelo absurdo, mas você pode utilizar o SimpleDateFormat.

FabinhoGil

muito obrigado pessoal, eu queria fazer isso manualmente
mas acho que nao da mesmo!!
mais vlw pelo SimpleDateFormat.
vou usa-lo
(y)

Criado 9 de março de 2013
Ultima resposta 11 de mar. de 2013
Respostas 5
Participantes 3