В коде установлена таймзона, берется дата текущая $date = date(DATE_ISO8601)
она равна например '2017-09-05T14:54:36+0300'
и передается дальше в функцию:
А с чего вы взяли, что время должно быть 17:54? 2017-09-05T14:54:36+0300 стоит читать как "5 сентября 2017 года, время 14:54:36 по часовому поясу UTC+03"
То же самое время в UTC будет выглядеть вот так: 2017-09-05T11:54:36+0000
Да, хорошо, я тут тупанул. Проболема в другом, IntlDateFormatter->format переводит время UTC+3 в UTC+7, т.е. в мое текущее время в ubunte. Откуда он берет эти настройки? В конфигах php где-то прописывается таймзона?