4

一个简单的跟进从较早的问题(PHP中的日期函数)我有以下代码:

$date_str = "Jan 14th 2011";
$date = new DateTime($date_str);
echo $date->format('d-m-y');

我想知道是否有一种简单的方法可以检查 $date_str 是否会转换为日期,以便在失败时停止防止错误?

基本上我希望避免使用 try catch 语句,但也许这是不可能的。

4

2 回答 2

8

根据文档,如果无法正确解析日期,则 DateTime 构造函数将引发异常。所以...

try {
    $date = new DateTime($date_str);
} catch (Exception $e) {
    die("It puked!");
}

如果您使用的是过程接口,则会得到一个布尔值 false,所以...

$date = date_create_from_format(...);
if ($date === FALSE) {
    die("It puked!");
}
于 2012-05-20T05:41:46.390 回答
1

因为如果传递了不正确的值,DateTime 类将引发异常。处理异常的唯一方法是使用 try catch 语句。

try {
    $date = new DateTime($date_str);
    $date->format('d-m-y');
} catch(Exception $e) {
    //$e will contain the caught exception if any.
}

我认为没有理由跳过 try catch 方法。如果你想验证日期输入,那么你可能想看看 php 的checkdate函数

于 2012-05-20T05:43:40.560 回答