Самый простой способ сделать это, на мой взгляд, это сравнить, если либо EndDate1 до StartDate2 и EndDate2 до StartDate1.
Это, конечно, если вы рассматриваете интервалы, где StartDate всегда находится перед EndDate.
Смотрите мой пример фрагмента. Я просто читаю данные из textarea, используя innerHtml, чтобы иметь новые доступные строки и использовать простой encodeURIComponent. Новые строки переносятся в %0A
, а пробелы - в %20
Возможно, ваша проблема заключалась в том, чтобы использовать innerText вместо innerHTML. innerText без новых строк.
const text = document.querySelector('textarea').innerHTML;
console.log(encodeURIComponent(text))
<textarea>
Test
aaaa
bbbb ccc
dddd
</textarea>