重なっているかどうかを判別するコード

というわけで、簡単な比較で判断できることはわかったので、あとは日付の比較をどうするか?だけ。
NSDate には 2つの日付を比較するメソッドがあったりするけど、返ってくる値が NSDate だったり昇順、降順、同じの値だったりするので、今回はせっかく簡単な数式で判断できるのだから、数字で確認しよう!と思って以下のようなコードに。

NSTimeInterval start = [schedule.start timeIntervalSinceReferenceDate];
NSTimeInterval end = [schedule.end timeIntervalSinceReferenceDate];
NSTimeInterval newStart = [newSchedule.start timeIntervalSinceReferenceDate];
NSTimeInterval newEnd = [newSchedule.end timeIntervalSinceReferenceDate];
if (start<=newEnd && end>=newStart) {
	return YES;
}

timeIntervalSinceReferenceDate を使って4つの日付を数字にしてから比較式に入れて確認をしてみた。
schedule と newSchedule の期間が重なっていたら YES を返す。


あ、日付での比較なので、NSDate は 0:00 で合わせるとかして「時間」を全部同じにしておかないと、同じ日付なのに時間が重ならないってことも起きるので注意。