E ai galera
olha soh estou com um grande problema
tenho q obter a data atual, facil neh?
mas depois tenho q poder setar outra data e comparar essa data q setei com a data atual!
Alguem pode me ajudar?
Valeu!
E ai galera
olha soh estou com um grande problema
tenho q obter a data atual, facil neh?
mas depois tenho q poder setar outra data e comparar essa data q setei com a data atual!
Alguem pode me ajudar?
Valeu!
Olá!!
Obter a data atual:
Calendar dataAtual = Calendar.getInstance();
Comparar com a data atual:
dataAtual.compareTo(outraData);
Abraços!!
Para criar uma data a partir de uma String, você pode usar a classe java.text.SimpleDateFormat:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date data = sdf.parse("25/06/2009");
Para saber se uma data é antes ou depois de outra:
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date data1 = sdf.parse("25/06/2008");
Date data 2= sdf.parse("25/06/2010");
if (data1.after(data2)) {
//data1 é posterior a data 2
}
if (data1.before(data2)) {
//data1 é anterior a data 2
}
if (data1.equals(data2)) {
//data1 é igual a data 2
}
Existe uma pegadinha nessa classe Date: Ao contrário do que parece, ela não é um Date e sim um "Time", por que armazena a data, hora, minuto, segundo e milisegundo.
Assim pode acontecer de você comparar duas Datas iguais e o equals() por exemplo retornar que são datas diferentes, por que apontam para horas diferentes:
Date data1 = new Date();
Thread.sleep(5000);
Date data2 = new Date();
if (data1.equals(data2)) //esse teste irá retornar false
Se a sua data foi carregada a partir de um banco de dados, de um campo que só armazena a data (não é timestamp), então é provavel que esse problema não ocorra, por que nesses casos normalmente a hora é setada para 00:00:00.
Agora se você trabalha com objetos Date criados pela aplicação, então você terá de ficar atento a isso.
Normalmente, quando trabalho com operações sobre datas, utilizo a classe java.util.GregorianCalendar.
http://java.sun.com/j2se/1.5.0/docs/api/java/util/GregorianCalendar.html
Exemplos:
GregorianCalendar gc = new GregorianCalendar(); //assume a data e hora atuais
//Ajustar campos da data:
gc.set(GregorianCalendar.YEAR, 2008); //muda o ano
gc.set(GregorianCalendar.MONTH, 0); //muda o mês -> Atenção: 0 = janeiro, 1 = fevereiro, etc.
gc.set(GregorianCalendar.DAY_OF_MONTH, 2008); //muda o dia do mês
//Compara se duas datas estao no mesmo mes:
public boolean isMesmoMes(Date data1, Date data2) {
GregorianCalendar gc1 = new GregorianCalendar();
GregorianCalendar gc2 = new GregorianCalendar();
gc1.setTime(data1);
gc2.setTime(data2);
return (gc1.get(GregorianCalendar.YEAR) == gc2.get(GregorianCalendar.YEAR) &&
gc1.get(GregorianCalendar.MONTH) == gc2.get(GregorianCalendar.MONTH));
}
//Remove a parte referente as horas em um objeto Date (util para comparar apenas a parte da data entre dois objetos):
public Date removerHora(Date data) {
if (data == null) return null;
GregorianCalendar in = new GregorianCalendar();
in.setTime(data);
int dia = in.get(GregorianCalendar.DATE);
int mes = in.get(GregorianCalendar.MONTH);
int ano = in.get(GregorianCalendar.YEAR);
GregorianCalendar out = new GregorianCalendar();
out.set(ano, mes, dia, 0, 0, 0);
out.set(GregorianCalendar.MILLISECOND, 0);
return out.getTime();
}
Espero ter ajudado, não sei se essas são as formas mais eficientes de se traballhar com datas, mas é desta maneira que tenho utilizado.