Carbon 中的 ISO 8601 解析验证
ISO 8601 parsing validation in Carbon
我正在通过 ajax 将日期传递到我的后端。日期采用 ISO 8601 格式和 UTC(例如 2017-07-04T23:21:37.000000Z)。我将传递这个字符串来创建一个 carbon 实例。如果我传递的字符串不是 ISO 8601 格式,carbon 是否有办法抛出异常?基本上我正在寻找像
这样的函数
时刻("2017-07-04T23:21:37.000000Z");
对于 momentjs 或
parseISO("2017-07-04T23:21:37.000000Z");
日期-fns。 Carbon::parse 方法接受许多可接受的格式,因此不适合我的用例。
您可以使用 Carbon::createFromFormat。 Carbon 是 DateTime 的扩展。我用 DateTime 展示它,所以它对每个人都是可重现的。
$strISO8601 = "2017-07-04T23:21:37.000000Z";
$format = "Y-m-d\TH:i:s.uO";
$dateTime = DateTime::createFromFormat($format, $strISO8601);
如果格式不正确,则结果为假。
来自 Carbon 文档:
Carbon::createFromFormat() 是基本 php 函数 DateTime::createFromFormat 的包装器。不同之处在于 $tz 参数可以是 DateTimeZone 实例或字符串时区值。此外,如果格式存在错误,此函数将调用 DateTime::getLastErrors() 方法,然后抛出 InvalidArgumentException 并将错误作为消息。
我正在通过 ajax 将日期传递到我的后端。日期采用 ISO 8601 格式和 UTC(例如 2017-07-04T23:21:37.000000Z)。我将传递这个字符串来创建一个 carbon 实例。如果我传递的字符串不是 ISO 8601 格式,carbon 是否有办法抛出异常?基本上我正在寻找像
这样的函数时刻("2017-07-04T23:21:37.000000Z");
对于 momentjs 或
parseISO("2017-07-04T23:21:37.000000Z");
日期-fns。 Carbon::parse 方法接受许多可接受的格式,因此不适合我的用例。
您可以使用 Carbon::createFromFormat。 Carbon 是 DateTime 的扩展。我用 DateTime 展示它,所以它对每个人都是可重现的。
$strISO8601 = "2017-07-04T23:21:37.000000Z";
$format = "Y-m-d\TH:i:s.uO";
$dateTime = DateTime::createFromFormat($format, $strISO8601);
如果格式不正确,则结果为假。
来自 Carbon 文档:
Carbon::createFromFormat() 是基本 php 函数 DateTime::createFromFormat 的包装器。不同之处在于 $tz 参数可以是 DateTimeZone 实例或字符串时区值。此外,如果格式存在错误,此函数将调用 DateTime::getLastErrors() 方法,然后抛出 InvalidArgumentException 并将错误作为消息。