Вы можете использовать Carbon :: createFromFormat. Углерод является продолжением DateTime. Я показываю его с помощью DateTime, поэтому он воспроизводится для всех.
$strISO8601 = "2017-07-04T23:21:37.000000Z";
$format = "Y-m-d\TH:i:s.uO";
$dateTime = DateTime::createFromFormat($format, $strISO8601);
Если формат неверен, результат будет ложным.
Из Carbon Do c:
Carbon :: createFromFormat () - это оболочка для базовой php функции DateTime :: createFromFormat. Разница в том, что аргумент $ tz может быть экземпляром DateTimeZone или строковым значением часового пояса. Кроме того, если есть ошибки с форматом, эта функция вызовет метод DateTime :: getLastErrors (), а затем выбросит InvalidArgumentException с ошибками в виде сообщения.