Как правильно сортировать массив с датами и разным часовым сдвигом??
Для работы с датами использовать momentjs.

Сначала распарсить даты (иначе при сортировке их придется парсить два-три раза)
Для сортировки использовать moment().diff() 

Сортирует правильно, с учётом временных зон. Именно в таком порядке произойдут эти события.

Если хочется проигнорировать часовые пояса и представить (зачем-то), что время у всех событий указано в одной общей временной зоне, то можно отрезать лишнее — брать часть строки до "GMT":test.forEach(item => item.tsNoTZ = new Date(item.dateAndTime.substring(0, 24)));
test.sort((a, b) => b.tsNoTZ - a.tsNoTZ);И лучше только однажды пройти по массиву и добавить каждому объекту новое поле, по которому потом сортировать.