首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在PHP DateTime中处理格式良好但无效的日期

在PHP DateTime中处理格式良好但无效的日期
EN

Stack Overflow用户
提问于 2015-06-04 21:10:03
回答 2查看 175关注 0票数 3

我试图使用PHP的DateTime来验证日期,但是DateTime将接受一些格式良好但无效的日期,比如2015-02-30,它将转换为March 2, 2015,而不会引发异常。对于使用DateTime或其他方法来处理这个问题,有什么建议吗?

编辑:谢谢大家的帮助!我是通过捕获异常来处理错误的,但我没有意识到,异常只会抛出错误,而不是警告,而这种输入只会发出警告。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-04 21:27:06

DateTime::getLastErrors()检查错误。格式良好但无效的日期:

代码语言:javascript
代码运行次数:0
运行
复制
$date = '2015-02-30';
DateTime::createFromFormat('Y-m-d', $date);

$errors = DateTime::getLastErrors();
print_r($errors);

产量:

代码语言:javascript
代码运行次数:0
运行
复制
Array
(
    [warning_count] => 1
    [warnings] => Array
        (
            [10] => The parsed date was invalid
        )

    [error_count] => 0
    [errors] => Array
        (
        )

)

而非格式良好的日期$date = '02-30';则产生:

代码语言:javascript
代码运行次数:0
运行
复制
Array
(
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 1
    [errors] => Array
        (
            [5] => Data missing
        )

)
票数 4
EN

Stack Overflow用户

发布于 2015-06-04 21:11:43

在使用checkdate()之前,可以使用DateTime()检查日期是否有效。

代码语言:javascript
代码运行次数:0
运行
复制
$parts = explode('-', '2015-02-30'); 
if (checkdate($parts[1], $parts[2], $parts[0])) {
    // DateTime() stuff here
}

演示

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

https://stackoverflow.com/questions/30654214

复制
相关文章

相似问题

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