Manipulação de Datas

3 respostas
P

Galera,

Como faço para verificar se uma data está dentro do range de 2 datas. Exemplo:

class FuncionárioTemporário{
    private Date dataDeContrataçãoIncio;
    private Date dataDeContrataçãoFim;
     
    // getters e setters
}

Quero verificar se a data atual está entre dataDeContrataçãoIncio e dataDeContrataçãoFim.

Valew!!

3 Respostas

ddduran

usa os metodo before e after

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Date.html

T
import java.util.*;
import java.text.*;

class ComparacaoDatas {
    /**
     * @param dt A data
     * @param dtInicio A data inicial
     * @param dtFim A data final
     * @return true se dtInicio <= dt <= dtFim
     */
    public static boolean entreDuasDatas (Date dt, Date dtInicio, Date dtFim) {
        return dtInicio.compareTo (dt) <= 0 && dt.compareTo (dtFim) <= 0;
    }
    /**
     * Alternativa usando before e after, conforme sugerido pelo ddduran. Note que neste caso
     * o intervalo é um pouco diferente:
     * @param dt A data
     * @param dtInicio A data inicial
     * @param dtFim A data final
     * @return true se dtInicio < dt < dtFim
     */
    public static boolean entreDuasDatas (Date dt, Date dtInicio, Date dtFim) {
        return dtInicio.before (dt) && dtFim.after (dt);
    }
    public static void main (String[] args) throws ParseException {
        DateFormat df = new SimpleDateFormat ("dd/MM/yyyy");
        Date dtInicio = df.parse ("01/10/2007");
        Date dtFim = df.parse ("31/12/2007");
        Date dt;
        dt = df.parse ("07/11/2007");
        System.out.println (df.format (dt) + " -> " + entreDuasDatas (dt, dtInicio, dtFim));
        System.out.println (df.format (dt) + " => " + entreDuasDatas2 (dt, dtInicio, dtFim));
        dt = df.parse ("07/09/2007");
        System.out.println (df.format (dt) + " -> " + entreDuasDatas (dt, dtInicio, dtFim));
        System.out.println (df.format (dt) + " => " + entreDuasDatas2 (dt, dtInicio, dtFim));
        dt = df.parse ("07/01/2008");
        System.out.println (df.format (dt) + " -> " + entreDuasDatas (dt, dtInicio, dtFim));
        System.out.println (df.format (dt) + " => " + entreDuasDatas2 (dt, dtInicio, dtFim));
        dt = dt.parse ("01/10/2007");
        System.out.println (df.format (dt) + " -> " + entreDuasDatas (dt, dtInicio, dtFim));
        System.out.println (df.format (dt) + " => " + entreDuasDatas2 (dt, dtInicio, dtFim));
        dt = dt.parse ("31/12/2007");
        System.out.println (df.format (dt) + " -> " + entreDuasDatas (dt, dtInicio, dtFim));
        System.out.println (df.format (dt) + " -> " + entreDuasDatas2 (dt, dtInicio, dtFim));
    }
}
P

Valew mmo.

Resolvi o problema!!

Criado 12 de dezembro de 2007
Ultima resposta 12 de dez. de 2007
Respostas 3
Participantes 3