Я знаю, что это было отмечено как язык-агностик, но для всех вас, внедряющихся в Java: не изобретайте велосипед и не используйте Joda Time.
http: // joda- time.sourceforge.net/api-release/org/joda/time/base/AbstractInterval.html#overlaps(org.joda.time.ReadableInterval)