Please post your code in code tags.
I see you've already made some progress, but not in the crawl, walk, run fashion I suggested. Since you started to work the solution by running rather than thoughtfully crawling, you may be running around in directions that aren't especially helpful. For example, I don't know that the method getMaxIntervalOverlapCount() is particularly useful, at least I don't see its value to deriving a solution.
I visualize the problem as a number of line segments laid on a number line, some overlap, some don't. There are then a number of useful methods I'd write to characterize the data set that includes those line segments from the min and max times in which they exist: one that adds the length of the line segment regardless of overlap; another that calculates the total overlap; and another that calculates the total time when no work is being done; etc. Once the data set has been adequately characterized, I could then answer any question about the data set anyone could ask.
You need to visualize the data in some useful way and then characterize it as needed to answer your question(s).