Montar Data - Reinventei a roda?

3 respostas
celso.martins

Existe algo pronto que substitua o meu método abaixo?

Recebo o dia, o mês e o ano de um formulário de busca JSP.

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateService {
	
	public static Date makeDate(String day, String month, String year){
		
		if (((day == null) || (day.equals(""))) ||
				((month == null) || (month.equals(""))) ||
				((year == null) || (year.equals("")))){
			return null;			
		}
		
		Calendar cal = GregorianCalendar.getInstance();
		cal.set(Calendar.DAY_OF_MONTH, Integer.parseInt(day));
		cal.set(Calendar.MONTH, Integer.parseInt(month) - 1);
		cal.set(Calendar.YEAR, Integer.parseInt(year));
		
		return new Date(cal.getTimeInMillis());
	}
}

Obrigado

3 Respostas

joede.fadel
essa função faz algo bem parecedo com o que você montou
public Date valData(String data) {
        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        try {
            sdf.setLenient(false);//valida data
            return sdf.parse(data);
        } catch (ParseException ex) {
            javax.swing.JOptionPane.showMessageDialog(null, "Data Invalida", "ERRO", javax.swing.JOptionPane.ERROR_MESSAGE);
            return null;
        }

    }
celso.martins

Maravilha. Muito mais limpo. O meu método ficou assim:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateService {
	
	public static Date makeDate(String day, String month, String year) {  
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");  
		try {  
			sdf.setLenient(false);  
			return sdf.parse(day + "/" + month + "/" + year);  
		} catch (ParseException ex) {  
			return null;  
		}  
	} 
}

Será que seria elegante resolver isso na Façade? Ou criar essa classe/método utilitário fica mais elegante? Eu particularmente prefiro criar os utilitários. Acho que o código fica mais limpo.

Dessa forma, a API do Java não deveria prover algo parecido? Como:

Date date = new Date("01", null, "2009")

E ao invés de tomar um NullPointer na cara, apenas retornar um nulo?

Obrigado.

EDIT: Mas sem dúvida, a flexibilidade da linguagem é algo que me atrai demais. Não tem o que você quer? Construa!!

joede.fadel

celso.martins:

EDIT: Mas sem dúvida, a flexibilidade da linguagem é algo que me atrai demais. Não tem o que você quer? Construa!!

As vezes fica melhor que o método que ja tem :smiley:

Criado 6 de fevereiro de 2009
Ultima resposta 6 de fev. de 2009
Respostas 3
Participantes 2