【发布时间】:2018-07-10 18:56:42
【问题描述】:
所以我正在尝试使用 preg_match 检查变量是否具有以下格式 YYYY-MM-DDTHH:MM:SS.MSSZ(ISO8601 时间戳)。
我尝试过的:
$timezone = new DateTime("now", new DateTimeZone(date_default_timezone_get()));
var_dump(boolval(preg_match("/^[0-9]{4,4}-[0-9]{2,2}-[0-9]{2,2}T[0-9]{2,2}:[0-9]{2,2}:[0-9]{2,2}(Z)|(\+[0-9]{2,2}:[0-9]{2,2})$/", date("Y-m-d\TH:i:s." .round(microtime(True) * 1000). "\\" . $timezone->format('P')))));
但是 var_dump 总是导致无效的结果... 例如,当我使用无效 ISO8601 格式的时间戳时
预期结果:bool(false) 和输出:bool(true)
所以在大多数情况下它会导致bool(true)...(不管它是无效还是有效)。
【问题讨论】:
标签: php timestamp preg-match iso8601