domingo, 11 de dezembro de 2005

Dica Java: Manipulando datas no J2SE e J2ME


1. Formatando um objeto Date (J2SE)

// Este será o objeto que fará a formatação
SimpleDateFormat formatadorData;
// String auxiliar que receberá a data formatada
String minhaDataFormatada = null;
// Data atual. Instanciando uma Data (a data e hora são atualizado
// apenas quando re-instanciamos o objeto, usando o operado "new").
Date minhaData = new Date();

formatadorData = new SimpleDateFormat("dd/MM/yyyy");
minhaDataFormatada = formatadorData.format(minhaData);
System.out.println(minhaDataFormatada);

formatadorData = new SimpleDateFormat("MM/dd/yy");
minhaDataFormatada = formatadorData.format(minhaData);
System.out.println(minhaDataFormatada);

formatadorData = new SimpleDateFormat("dd/MM/yy hh:mm:ss");
minhaDataFormatada = formatadorData.format(minhaData);
System.out.println(minhaDataFormatada);

2. Validando uma String e convertendo para Date (J2SE)

public static boolean dataValida(String data) {

DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
Date minhaDataConvertida = null;

df.setLenient(false);

try {
minhaDataConvertida = df.parse(data);
} catch (ParseException pex) {
return false;
}

return true;
}

3. Personalizando um objeto Date (J2SE/J2ME)

// Instanciando um objeto do tipo Date. Neste caso ele está
// utilizando a data atual, mas poderia ser qualquer objeto do
// tipo Date.
Date minhaData = new Date();

// Inicializando o "Calendar". Iremos utilizá-lo para pegar
// o dado desejado do objeto "Date".
Calendar meuCalendario = Calendar.getInstance();

// "Setando" os milisegundos do objeto "Date" para o "Calendar".
// Poderia ser qualquer objeto do tipo Date. Exemplo: Quando em J2ME,
// trabalhamos com DateField e queremos manipular, utilizamos
// o método getDate() para retornar um objeto do tipo "Date".
meuCalendario.setTime(minhaData);

// Escrevendo as inforações
System.out.println("Dia: " + meuCalendario.get(Calendar.DATE));
System.out.println("Mês: " + (meuCalendario.get(Calendar.DAY_OF_MONTH) + 1));
System.out.println("Ano: " + meuCalendario.get(Calendar.YEAR));
System.out.println("Dia da semana: " + meuCalendario.get(Calendar.DAY_OF_WEEK));
System.out.println("Horas: " + meuCalendario.get(Calendar.HOUR ));
System.out.println("Minutos: " + meuCalendario.get(Calendar.MINUTE ));
System.out.println("Segundos: " + meuCalendario.get(Calendar.SECOND ));
System.out.println("Milisegundos: " + meuCalendario.get(Calendar.MILLISECOND ));


4. Pegando a data atual J2ME

Calendar meuCalendario = Calendar.getInstance();
System.out.println("Dia: " + meuCalendario.get(Calendar.DATE));
System.out.println("Mês: " + (meuCalendario.get(Calendar.DAY_OF_MONTH) + 1) );
System.out.println("Ano: " + meuCalendario.get(Calendar.YEAR));