Interseccao entre datas Calendar

1 resposta
D

Boa tarde galera ! ! ! ! !

Estou com um problema que tenho certeza que muitos ja se depararam com ele.

O negocio é o seguinte . . .

Tenho dataIni e dataFim e nao pode haver interseccao entre as dois campos de datas.

Ex:

dataIni1 = 01/05/2006
dataFim1 = 10/05/2006

dataIni2 = 02/05/2006
dataFim2 = 11/05/2006

houve interseccao

dataIni1 = 01/05/2006
dataFim1 = 10/05/2006

dataIni2 = 11/05/2006
dataFim2 = 12/05/2006

nao houve interseccao

alguem sabe como faco isso em java?

8O 8O 8O 8O 8O 8O 8O 8O

Obrigado

donatinho

1 Resposta

L

Bom, garantindo que a data inicial sempre sera menor que a data final (e isso é facil de fazer), é só validar a data inicial da segunda faixa de datas, se essa data for maior que a data final da primeira faixa de datas, então ela não esta entre:

public static void main(String[] args) {
		try {
			valida("01/05/2006", "10/05/2006", "11/05/2006", "26/05/2006");
		} catch (ParseException e) {
			e.printStackTrace();
		}
	}

	public static void valida(Date d1Ini, Date d1Fim, Date d2Ini, Date d2Fim) {
		if (d2Ini.getTime() > d2Fim.getTime())
			throw new IllegalArgumentException(
					"Data final da segunda faixa que data inicial.");

		if (d1Ini.getTime() > d1Fim.getTime())
			throw new IllegalArgumentException(
					"Data final da primeira faixa que data inicial.");

		if (d2Ini.getTime() > d1Fim.getTime()) {
			System.out.println("fora");
		} else {
			System.out.println("entre");
		}
	}

	public static void valida(String sd1Ini, String sd1Fim, String sd2Ini,
			String sd2Fim) throws ParseException {

		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

		Date d1Ini = sdf.parse(sd1Ini);
		Date d1Fim = sdf.parse(sd1Fim);

		Date d2Ini = sdf.parse(sd2Ini);
		Date d2Fim = sdf.parse(sd2Fim);

		valida(d1Ini, d1Fim, d2Ini, d2Fim);
	}
Criado 18 de maio de 2007
Ultima resposta 18 de mai. de 2007
Respostas 1
Participantes 2