一个简单的跟进从较早的问题(PHP中的日期函数)我有以下代码:
$date_str = "Jan 14th 2011";
$date = new DateTime($date_str);
echo $date->format('d-m-y');
我想知道是否有一种简单的方法可以检查 $date_str 是否会转换为日期,以便在失败时停止防止错误?
基本上我希望避免使用 try catch 语句,但也许这是不可能的。
一个简单的跟进从较早的问题(PHP中的日期函数)我有以下代码:
$date_str = "Jan 14th 2011";
$date = new DateTime($date_str);
echo $date->format('d-m-y');
我想知道是否有一种简单的方法可以检查 $date_str 是否会转换为日期,以便在失败时停止防止错误?
基本上我希望避免使用 try catch 语句,但也许这是不可能的。
根据文档,如果无法正确解析日期,则 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!");
}
因为如果传递了不正确的值,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函数