PHP DateTime异常和错误处理

Sat*_*nix 11 php datetime

如何在创建DateTime对象时阻止PHP崩溃?

$in = new DateTime($in);
$out = new DateTime($out);
Run Code Online (Sandbox Code Playgroud)

$in$out这两个来自一个表格,以便他们可以是任何东西.我强制用户使用日历并使用javascript将其阻止为日期.如果用户可以绕过此检查怎么办?

如果$in = "anything else other than a date"PHP将崩溃并阻止整个页面的呈现.

如何防止这种情况,以及return(0)PHP无法解析日期?

fai*_*ino 17

查看文档DateTime(),这里有一个小片段:

<?php
try {
    $date = new DateTime('2000-01-01');
} catch (Exception $e) {
    echo $e->getMessage();
    exit(1);
}

echo $date->format('Y-m-d');
?>
Run Code Online (Sandbox Code Playgroud)

PHP手册DateTime :: __ construct()

  • 该异常不会被捕获,因为会引发致命错误。请参阅同一文档页面上的此评论:https://www.php.net/manual/en/datetime.construct.php#113342 (3认同)

Joh*_*nde 7

strtotime()如果格式不好,将返回 false,因此这应该捕获错误的格式。

if (strtotime($in) === false)
{
     // bad format
}
Run Code Online (Sandbox Code Playgroud)