Se lembrarmos da definição de Data que representa o número de milisegundos que passaram deste 1º de Janeiro de 1970 00:00:00.000 GMT. Temos que as operações operações de adicionar ou substrair tempos podem ser manuseadas como operações matemáticas com inteiros:
import java.util.Date;
public class ExemploData3 {
public static void main(String[] args) {
Date agora = new Date();
long t = agora.getTime();
// 7 dias atrás:
// equivale a achar t menos
// 7 dias x 24 horas x 60 minutos x 60 segundos x 1000 milisegundos
Date seteDias = new Date( t - 7 * 24 * 60 * 60 * 1000);
System.out.println("Sete dias atras era " + seteDias);
// daqui a sete dias
seteDias = new Date( t - 7 * 24 * 60 * 60 * 1000);
System.out.println("Daqui a sete dias serao " + seteDias);
}
}
Esta é uma classe funcional mas não é a melhor forma de realizar operações sobre datas. O Java possui uma classe denominada java.util.Calendar que permite trabalhar melhor com estes valores:
import java.util.Calendar;
import java.text.SimpleDateFormat;
public class ExemploData4 {
public static void main(String[] args) {
Calendar data = Calendar.getInstance( );
// formatação a ser utilizada para apresentação das datas
SimpleDateFormat sfmt = new SimpleDateFormat("dd/MM/yyyy '-' hh:mm:ss");
System.out.println("data (agora): " + sfmt.format(data.getTime()));
// obter 2 anos atras
Calendar doisAnosAtras = data;
doisAnosAtras.add(Calendar.DAY_OF_YEAR, -(365*2));
System.out.println("dois anos atras : " +
sfmt.format(doisAnosAtras.getTime()));
Calendar doisAnosAtrasSegundaOpcao = data;
doisAnosAtrasSegundaOpcao.add(Calendar.YEAR, -2);
System.out.println("dois anos atras (segunda opcao): " +
sfmt.format(doisAnosAtrasSegundaOpcao.getTime()));
// compara as datas
// existe um método Calendar.before(data) veja na documentação
if (doisAnosAtras.after(data)) {
System.out.println("doisAnosAtras tem data posterior a data");
} else {
System.out.println("doisAnosAtras tem data anterior a data");
}
if (doisAnosAtrasSegundaOpcao.equals(doisAnosAtras)) {
System.out.println("doisAnosAtrasSegundaOpcao igual a doisAnosAtras");
} else {
System.out.println("doisAnosAtrasSegundaOpcao diferente de doisAnosAtras");
}
}
}
Nenhum comentário:
Postar um comentário