How to know if two periods intersect?

2

Let's say I have 2 objects that have the following property:

Objeto 1: 
Date dataAtivacao;
Date dataDesativacao;

Objeto 2: 
Date dataAtivacao;
Date dataDesativacao;

How do you know if these dates "cross". For example:

EXEMPLO 1, ENTRADA:

Objeto1.getDataAtivacao = 10/10/2015
Objeto1.getDataDesativacao = 10/11/2015

Objeto2.getDataAtivacao = 15/10/2015
Objeto2.getDataDesativacao = 15/11/2015

Saída: Se interceptam.

EXEMPLO 2, ENTRADA:

Objeto1.getDataAtivacao = 10/10/2015
Objeto1.getDataDesativacao = 10/11/2015

Objeto2.getDataAtivacao = 11/11/2015
Objeto2.getDataDesativacao = 15/11/2015

Saída: Não se interceptam.

How to do this? Thank you!

    
asked by anonymous 30.06.2015 / 05:07

1 answer

4

Assuming the periods are correctly defined, ie the start date is always before the end date, then this condition is sufficient to determine if two dates are intercepted:

(InicioPeriodo1 <= FimPeriodo2)  &&  (FimPeriodo1 >= InicioPeriodo2)

In your particular case it would look like:

Objeto1.getDataAtivacao = 10/10/2015
Objeto1.getDataDesativacao = 10/11/2015

Objeto2.getDataAtivacao = 15/10/2015
Objeto2.getDataDesativacao = 15/11/2015


if (Objecto1.getDataActivacao <= Objecto2.getDataDesactivacao && Objecto1.getDataDesactivacao >= Objecto1.getDataActivacao)
   System.Out.Println("Interceptam");
else
   System.Out.Println("Não se interceptam");
    
30.06.2015 / 07:15