[RESOLVIDO] Verificar se um intervalo de horas está em outro intervalo

Galera tó meio confuso nesse problema. Como verificar se um intervalo de horas X está contido em outro intervalo Y.

Ex:

                String deHoras = "07:15";
		String ateHoras = "11:14";
		
// Está contido em:

		String deHorasVer = "08:15";
		String ateHorasVer = "10:30";

Tentei com date before e after e tá rolando não!

SimpleDateFormat formatador = new SimpleDateFormat("HH:mm");  
		
		try {
			Date beforeDate = formatador.parse(deHoras);
			Date afterDate = formatador.parse(ateHoras);
			Date deDateVer = formatador.parse(deHorasVer);
			Date ateDateVer = formatador.parse(ateHorasVer);
			
			if((beforeDate.after(deDateVer) && beforeDate.before(ateDateVer)) || (afterDate.after(deDateVer) && afterDate.before(ateDateVer))){
				System.out.println("Dentro do intervalo!");
			}else{
				System.out.println("Fora do intervalo!");
			}
			
			
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

A lógica do if tem que ser toda com &&:

if((beforeDate.after(deDateVer) && beforeDate.before(ateDateVer)) 
    && (afterDate.after(deDateVer) && afterDate.before(ateDateVer))){
  ...
}

Parece que essa questão é meio difícil mesmo as respostas que eu achei não funcionaram muito bem!
Não queria mas alguém sabe como resolver com sql?

tenta o JodaTime!

	public static void main(String[] args) {

		DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
		DateTime deHoras = formatter.parseDateTime("09:15");
		DateTime ateHoras = formatter.parseDateTime("09:45");
		DateTime deHorasVer = formatter.parseDateTime("08:15");
		DateTime ateHorasVer = formatter.parseDateTime("10:30");

		boolean inicio = deHoras.isAfter(deHorasVer);
		boolean fim = ateHoras.isBefore(ateHorasVer);

		if (inicio && fim) {
			System.out.println("o primeiro intervalo está contido no segundo intervalo!");
		} else {
			System.out.println("o primeiro intervalo não está contido no segundo intervalo");
		}
	}

Fiz rapidinho porque estou no trabalho, mas acho que a idéia é por ai!

Abraço, espero ter ajudado!

Galera muito obrigado msm!
Vlw bobmatta por ter me falado da Joda-Time é perfeito!

Vasculhando a documentação, achei o método overlap que obtém a sobreposição de uma hora e outra. Depois fiz umas alterações e ficou perfeito!

Segue ae o código tenso! kkkkkkk!

	public static void main (String [] args){
		
		String deHoras = "13:56";
		String ateHoras = "14:55";
		
		String deHorasVer = "12:15";
		String ateHorasVer = "13:55";
		
		DateTimeFormatter formatador = DateTimeFormat.forPattern("HH:mm");  
		
		try {
			DateTime beforeDate = formatador.parseDateTime(deHoras);
			DateTime afterDate = formatador.parseDateTime(ateHoras);
			DateTime deDateVer = formatador.parseDateTime(deHorasVer);
			DateTime ateDateVer = formatador.parseDateTime(ateHorasVer);
			
				
			Interval interval = new Interval(beforeDate, afterDate);
			Interval interval2 = new Interval(deDateVer, ateDateVer);
			
			ReadableInterval readableInterval = interval2;
			
			System.out.println(interval.overlap(readableInterval)); //Se retornar null está fora do intervalo senão está no intervalo
			// o método overlaps() é melhor ainda que retorna true ou false
			
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

por nd, cara! :slight_smile: