The very first thing that came to my mind after reading the OP was the method DateTime::Span::contains. However, yours is the right approach since that method only works for sets that are fully inside, as the manual says.
|Replies are listed 'Best First'.|
Re^4: Check if Date interval contains Hour X
by ikegami (Pope) on Jul 23, 2009 at 20:26 UTC