Pegar data de uma String!

5 respostas
rafaelzulin

Olá… Seguinte. Eu gostaria de pegar a data de uma String, por exemplo no formato “dd/mm/aaaa”, tranforma-la em um Date. Estou procurando na internet por exemplos, porém acho exemplos que usam as classes DateFormat e SimpleDateFormat. Essas classes estão dentro do pacote java.text.* . Porém, esse pacote não existe (pelo menos não achei) no micro edition. Na standard edition ele tá lá normal. Alguém sabe ai como resolver isso?

t+

5 Respostas

alanbrasil1984

Acredito que vc tenha que criar uma validação de data.

Att,

Alan Rodrigo.

rafaelzulin

alanbrasil1984:
Acredito que vc tenha que criar uma validação de data.

Att,

Alan Rodrigo.

como assim? não entendi!!

alanbrasil1984

tem como vc criar um metodo tipo esse

public static Calendar getDataCalendar(String data){
		
		//Este metodo recebe uma String no formato DD/MM/AA
		//E retorna um objeto Calendar com a data ajustada
		//Pela data recebida como String
		if (data == null){
			return null;
		}
		
		String[] resultado = data.split("/");
		
		//Verifica se foram recebidos 3 tokens: dd/mm/aaaa
		if (resultado.length != 3){
			return null;
		}

		//Verifica o conteudo dos tokens da data
		try{
			Integer dia = new Integer(resultado[0]);
			Integer mes = new Integer(resultado[1]);
			Integer ano = new Integer(resultado[2]);
			
			if(mes.intValue() == 2){
				//o ano � bissexto
				if(ano.intValue() % 4 == 0 && ano.intValue() % 100 != 0){
					if ((dia.intValue() < 1) || (dia.intValue()>29)){
						return null;
					}
				}else if(ano.intValue() % 400 == 0){
					if ((dia.intValue() < 1) || (dia.intValue()>29)){
						return null;
					}
				}else
					if ((dia.intValue() < 1) || (dia.intValue()>28)){
						return null;
					}
			}
			
			if(mes.intValue() == 1 || mes.intValue() == 3 || mes.intValue() == 5 || mes.intValue() == 7 
					|| mes.intValue() == 8 || mes.intValue() == 10 ||mes.intValue() == 12){
				if ((dia.intValue() < 1) || (dia.intValue()>31)){
					return null;
				}
			}
			if(mes.intValue() == 4 || mes.intValue() == 6 || mes.intValue() == 9 || mes.intValue() == 11){
				if ((dia.intValue() < 1) || (dia.intValue()>30)){
					return null;
				}				
			}
			
		
			if ((mes.intValue() < 1) || (mes.intValue()>12)){
				return null;
			}
			
			if((ano.intValue() < 1700) || (ano.intValue() > 9999)){
				return null;
			}
		
			//Data validada em fun&#65533;&#65533;o da Forma&#65533;&#65533;o e conteudo
			Calendar calendario = Calendar.getInstance();
			calendario.set(Calendar.DAY_OF_MONTH,dia.intValue());
			calendario.set(Calendar.MONTH,mes.intValue()-1);
			calendario.set(Calendar.YEAR,ano.intValue());
			calendario.set(Calendar.HOUR_OF_DAY,0);
			calendario.set(Calendar.MINUTE,0);
			calendario.set(Calendar.SECOND,0);
			calendario.set(Calendar.MILLISECOND,0);
			return calendario;
			
		}catch(NumberFormatException nfe){
			return null;
		}
		
		
	}

Espero ter ajudado

Att,

Alan Rodrigo.

rafaelzulin

ok!!
vlw!!
Mas pelo que estou vendo não existe mesmo nada pronto pra tratar isso no java me?

t+

alanbrasil1984

eu aredito que não tenha mais tbm não tenho 100% de certeza

att,

Alan Rodrigo.

Criado 18 de fevereiro de 2008
Ultima resposta 18 de fev. de 2008
Respostas 5
Participantes 2