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 并将错误作为消息。