Manipulação de Datas

0 respostas
java
J

Oi Pessoas, estou com uma duvida, tenho que desenvolver um programa para alocação de salas e eventos, só que para para alocar sala evento precisa saber manipular Datas e eu ainda estou aprendendo. Vamos ao prolema, para fazer a locação de um evento em uma sala tenho que saber se já não existe um evento alocado naquele dia e horário, sendo que evento podem ser repetidos ou não, eventos podem se repedir durante varias semanas naquele mesmo dia da semana e horário, mas minha duvida e como verificar os eventos repetido, ou seja, que se repetem durante a semana naquela sala para que não dê choque de horário, como eu faço isso?

obs: estou utilizando a biblioteca LocalDateTime.

DateTimeFormatter formatoData = DateTimeFormatter.ofPattern("dd/MM/yyyy");
	DateTimeFormatter formatoHora = DateTimeFormatter.ofPattern("HH:mm");
	
	Buscar buscar = new Buscar();
	Evento eventoAserAlocado = buscar.buscarEvento("EV-01");
	
	String eventoAserAlocadoInicio = eventoAserAlocado.getDataInicio();
	String EventoAserAlocadoFim = eventoAserAlocado.getDataFinal();
	
	for(Alocar ea: alocados){
		
		if(ea.getIdSala().equals("SA-01")){
	
			Alocar alocado = ea;
			Evento eventoJaAlocado = buscar.buscarEvento(alocado.getIdEvento());
			
			String eventoJaAlocadoInicio = eventoJaAlocado.getDataInicio();
			String eventoJaAlocadoFim = eventoJaAlocado.getDataFinal();
			
			String arrayEventosJaAlocadosFim[] = new String[2];
			String arrayEventosJaAlocadosInicio[] = new String[2];
			String arrayEventosAserAlocadoFim[] = new String[2];
			String arrayEventosAserAlocadoInicio[] = new String[2];
			
			arrayEventosJaAlocadosInicio = eventoJaAlocadoInicio.split(" ");
			arrayEventosJaAlocadosFim = eventoJaAlocadoFim.split(" ");
			
			
			arrayEventosAserAlocadoInicio = eventoAserAlocadoInicio.split(" ");
			arrayEventosAserAlocadoFim = EventoAserAlocadoFim.split(" ");
			
			String eventoAserAlocadoDataInicio = arrayEventosAserAlocadoInicio[0];
			String eventoAserAlocadoDataFim = arrayEventosAserAlocadoFim[0];
			
			String eventoAserAlocadoHoraInicio = arrayEventosAserAlocadoInicio[1];
			String eventoAserAlocadoHoraFim = arrayEventosAserAlocadoFim[1];
			
			String eventoJaAlocadoDataInicio = arrayEventosJaAlocadosInicio[0];
			String eventoJaAlocadoDataFim = arrayEventosJaAlocadosFim[0];
			
			String eventoJaAlocadoHoraInicio = arrayEventosJaAlocadosInicio[1];
			String eventoJaAlocadoHoraFim = arrayEventosJaAlocadosFim[1];
			
			
			LocalDate sDataInicioEventoAserAlocado = LocalDate.parse(eventoAserAlocadoDataInicio , formatoData );
			
			LocalDate sDataFim1EventoAserAlocado = LocalDate.parse(eventoAserAlocadoDataFim , formatoData );
			
			LocalDate sDataInicioJaAlocado = LocalDate.parse(eventoJaAlocadoDataInicio , formatoData );
			
			LocalDate sDataFim2JaAlocado = LocalDate.parse(eventoJaAlocadoDataFim , formatoData );
			
			
			LocalTime horaInicialEventoAserAlocado = LocalTime.parse(eventoAserAlocadoHoraInicio, formatoHora);
			LocalTime horaFinalEventoAserAlocado = LocalTime.parse(eventoAserAlocadoHoraFim, formatoHora);
			
			LocalTime horaInicialEventoJaAlocado = LocalTime.parse(eventoJaAlocadoHoraInicio, formatoHora);
			LocalTime horaFinalEventoJaAlocado = LocalTime.parse(eventoJaAlocadoHoraFim, formatoHora);
	
			Period period = Period.between(sDataInicioEventoAserAlocado , sDataInicioJaAlocado);
			
			
			if(eventoAserAlocado.getNumRepedicoes() > 0){
				
				for(int i =0; i < eventoAserAlocado.getNumRepedicoes(); i++){
					
					LocalDate rInicio = sDataInicioEventoAserAlocado.plusDays((i+1)*7);
					Period period1 = Period.between(rInicio , sDataInicioJaAlocado);
					Duration dur = Duration.between(horaFinalEventoAserAlocado , horaInicialEventoJaAlocado);

					if(period1.getDays() == 0){
						
						if(horaInicialEventoJaAlocado.isAfter(horaFinalEventoAserAlocado)){
							System.out.println("true");
						} 
						else if(dur.toMillis() < 60){
							System.out.println("false");
						}
						else if(dur.toHours() == 0){
							System.out.println("true");
						}
						else if(horaFinalEventoAserAlocado.isAfter(horaFinalEventoJaAlocado)){
							System.out.println("false");
						}
						else if(horaInicialEventoAserAlocado.isAfter(horaInicialEventoJaAlocado)){
							System.out.println("false");
						} 
						else if(horaFinalEventoAserAlocado.isAfter(horaInicialEventoJaAlocado)){
							System.out.println("false");
						} 
						else {
							System.out.println("false");
						}
					}
					else{
						
					}
					
				}
			}
			else{
				System.out.println("dia diferentes");
			}
		}
	}
Criado 22 de novembro de 2016
Respostas 0
Participantes 1