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

docsに従って、日付を適切に解析できない場合、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 に答える