Для того чтобы распарсить строки с датами я использовал различные регулярные выражения. Они работают достаточно быстро и позволяют надежно распознавать подстроки, соответствующие определенному шаблону.
Для каждого элемента в строке даты по ISO 8601 была написано своё регулярное выражение, отфильтровывающее необходимый кусок информации, будь то дата, время или часовой пояс.
В некоторых случаях, если месяц был написан словами, то тогда год, и число отдельно вылавливаются из изначальной строки, а месяц находится при помощи обычного поиска по строке по названию месяца.