Проверка синтаксического анализа ISO 8601 в углероде - PullRequest
0 голосов
/ 04 августа 2020

Я передаю дату своему бэкэнду через ajax. Дата в формате ISO 8601 и в UT C (например, 2017-07-04T23: 21: 37.000000Z). Я собираюсь передать эту строку, чтобы создать экземпляр углерода. Есть ли способ для углерода вызвать исключение, если строка, которую я передаю, не соответствует формату ISO 8601? В основном я ищу такую ​​функцию, как

moment ("2017-07-04T23: 21: 37.000000Z");

для момента js или

parseISO("2017-07-04T23:21:37.000000Z");

для date-fns. Метод Carbon :: parse принимает многие принятые форматы, поэтому в моем случае он не подходит.

1 Ответ

3 голосов
/ 05 августа 2020

Вы можете использовать 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 с ошибками в виде сообщения.

...