首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用php验证RFC3339日期-时间

使用php验证RFC3339日期-时间
EN

Stack Overflow用户
提问于 2018-10-14 20:48:04
回答 2查看 2K关注 0票数 2

有什么建议可以证明日期时间是有效的but 3339?我知道我可以将它转换成unix时间,然后将它格式化为有效的RFC3339,但不希望这样做,而是强制提供正确的格式。http://mattallan.org/posts/rfc3339-date-time-validation/建议使用regex,这是最后的选择。谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-14 21:16:47

DateTime有一个预定义的DaTeTime::RFC3339格式常量。由于createFromFormat返回false,如果它不能按照所提供的格式解析日期,您可以使用该检查作为验证程序:

代码语言:javascript
复制
validRFC3339Date("2018-01-29T20:36:01Z");
validRFC3339Date("2018-01-29T20:36:01+00:00");

validRFC3339Date("2018-01-22 20:36");
validRFC3339Date("2018-09-28T16:00:05.000Z");

function validRFC3339Date($date) {
    if (DateTime::createFromFormat(DateTime::RFC3339, $date) === FALSE) {
        echo "$date: Invalid RFC3339\n";
    } else {
        echo "$date: Valid RFC3339\n";
    }
}
票数 4
EN

Stack Overflow用户

发布于 2018-10-14 20:53:06

如果确实决定使用regex,则可以使用以下代码:

代码语言:javascript
复制
preg_match('/^([0-9]+)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])[Tt]([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9]|60)(\.[0-9]+)?(([Zz])|([\+|\-]([01][0-9]|2[0-3]):[0-5][0-9]))$/', $time);

如果$time与regex匹配,这将返回true。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52806967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档