Foros del Web » Programación para mayores de 30 ;) » Java »

Solapamiento Fechas

Estas en el tema de Solapamiento Fechas en el foro de Java en Foros del Web. Tengo una lista de Tarifas históricas, con su fecha fin y fecha inicio. Y al guardar una nueva tarifa quiero ver si hay solapamiento. La ...
  #1 (permalink)  
Antiguo 17/04/2015, 02:41
 
Fecha de Ingreso: octubre-2008
Ubicación: Madrid
Mensajes: 352
Antigüedad: 15 años, 7 meses
Puntos: 5
Solapamiento Fechas

Tengo una lista de Tarifas históricas, con su fecha fin y fecha inicio.
Y al guardar una nueva tarifa quiero ver si hay solapamiento.
La tarifa nueva no tiene obligatoriamente fecha fin, pero si de inicio.
Si la fecha fin es null es que no puede haber nada en histórico después del a fecha inicio de la nueva tarifa.

He hecho el siguiente código pero no se si se me escapa alguna caso.

Código Java:
Ver original
  1. public boolean solapaTarifaConHistorico(Tarifa tarifa) {
  2.     if (CollectionUtils.isNotEmpty(tarifasHistoricas)) {
  3.       for (Tarifa historica : tarifasHistoricas) {
  4.         if (tarifa.getFechaFin() == null) {
  5.           if (tarifa.getFechaInicio().after(historica.getFechaInicio()) || tarifa.getFechaInicio().before(historica.getFechaFin())) {
  6.             return true;
  7.           }
  8.         } else {
  9.           if (historica.getFechaInicio().after(tarifa.getFechaInicio()) && !tarifa.getFechaInicio().after(tarifa.getFechaFin())) {
  10.             return true;
  11.           }
  12.           if (historica.getFechaFin().before(tarifa.getFechaFin()) && !tarifa.getFechaFin().before(tarifa.getFechaInicio())) {
  13.             return true;
  14.           }
  15.         }
  16.       }
  17.     }
  18.     return false;
  19.   }

Si alguien le puede echar un ojo y ver si esta correcto.
Muchas gracias.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:42.