I need to iterate an array of date objects, with duration and get how many overlaps each of them.
But I'm looking to do it efficiently and quickly. I'm looking for frameworks to manage time periods but I have not found anything.
I developed this, but it really does not work well.
function numeroSolapacionesSesiones(sesion, lista)
{
var sesiones = new Array();
if(lista != null && lista.length > 0)
{
var fecha = convierteCadenaFechaHoraIsoFechaLocal(sesion.fechaCelebracionStr);
var hora = fecha.substring(11,16);
var paramsHora = hora.split(":");
var duracion = 90;
var horasDuracion = duracion/60;
var minutosRestoDuracion = duracion%60;
var minutosTotalesConDuracion = parseInt(paramsHora[1]) + minutosRestoDuracion;
var horasSumables = minutosTotalesConDuracion/60;
var minutosFinales = minutosTotalesConDuracion%60;
var horaInicio = parseInt(paramsHora[0]);
var horaFinal = parseInt(paramsHora[0]) + horasSumables;
var minutoInicio = parseInt(paramsHora[1]);
var minutoFinal = minutosFinales;
for(var numSesion in lista)
{
var sesionItem = lista[numSesion];
var fechaItem = convierteCadenaFechaHoraIsoFechaLocal(sesionItem.fechaCelebracionStr);
var horaItem = fechaItem.substring(11,16);
var paramsHoraItem = horaItem.split(":");
var duracionItem = 90;
var horasDuracionItem = duracionItem/60;
var minutosRestoDuracionItem = duracionItem%60;
var minutosTotalesConDuracionItem = parseInt(paramsHoraItem[1]) + minutosRestoDuracionItem;
var horasSumablesItem = minutosTotalesConDuracionItem/60;
var minutosFinalesItem = minutosTotalesConDuracionItem%60;
var horaInicioItem = parseInt(paramsHoraItem[0]);
var horaFinalItem = parseInt(paramsHoraItem[0]) + horasSumablesItem;
var minutoInicioItem = parseInt(paramsHoraItem[1]);
var minutoFinalItem = minutosFinalesItem;
if(horaInicio == horaInicioItem || horaFinal == horaInicioItem || horaInicio == horaFinalItem)
{
if(!(horaFinal == horaInicioItem && minutoFinal < minutoInicioItem || horaInicio == horaFinalItem && minutoFinalItem < minutoInicio))
{
sesiones.push(sesionItem);
}
}
}
}
return sesiones;
}