Scusami, avevo male interpretato l'esigenza.
Secondo me ci sono due modi di procedere:
Quindi, quando incontra un evento di apertura, va a cercare il successivo evento di chiusura e calcola i tempi.
È chiaro che devi prevedere anche la possibilità di errori, cioè due eventi di apertura consecutivi oppure due eventi di chiusura consecutivi oppure l'assenza totale di uno dei due eventi.
Spero di essere stato d'aiuto