0

Symofny2 アプリケーションの php メソッドで変数を String として渡しました。

public function eventAllByScenarioAndDateAction($apiVersion, $scenario,$date, $options)

次に、SQL クエリを使用してテーブルにデータを入力するために渡すに$dateは、形式が DateTime 型である必要があります。YYYY-MM-DD HH:MM:SS

渡された形式が正しいかどうかを確認したいので、コントロールを配置します。

$dateControl1=strtotime($date);

そしてif文:

if ($dateControl1 === false)

しかし、「if」は2013-33-01、たとえば、HH:MM:SS

$date がメソッドにどのように渡されるかを確認するにはどうすればよいですYYYY-MM-DDYYYY-MM-DD HH:MM:SS

繰り返しますが、予想される形式とは異なる形式を破棄するにはどうすればよいですか (たとえば、- の代わりに / を使用するなど)。

4

2 に答える 2

0

それほど具体的である必要はありません。以下は問題なく動作します。

$foo = new DateTime("2013-01-01");
$bar = new DateTime("2013-01-01 01:23:45");
echo $foo->format("Y-m-d H:i:s"); // 2013-01-01 00:00:00
echo $bar->format("Y-m-d H:i:s"); //2013-01-01 01:23:45

無効な日付が主な懸念事項である場合は、try/catch 句を使用します。

try {
    $baz = new DateTime("foobar");
} catch (Exception $e) {
    // do something else here
    // like throwing an HTTP Exception
}
于 2013-10-23T14:01:39.300 に答える
0

実際、@nietonfir ソリューションは私にとってはうまく機能します。

try { $dateNew = new \DateTime('$date'); } catch (\Exception $e) { echo return $e;  }

(symofny 例外をバイパスするための宣言の前にある "\" に注意してください) 誰かが YYYY-mm-dd だけを渡した場合、日付は 00:00:00 時間までに完了するためです。検証する前に!

たとえば

SOMETHING THAT CHECKIN DATE IF ITS yyyy-mm-dd `hh:mm:ss OR just yyyy-mm-dd
and THEN IF WE ARE IN THE SECOND CASE DOING SOMETHING BEFORE doing

try { $dateNew = new \DateTime('$date'); } catch (\Exception $e) { echo return $e;  }

次のようなアプローチ:

list($date1, $time) = explode("  ",$date);

yyyy-mm-dd の場合、スペース " " が認識されず、次のような例外が発生するため、機能しません。

Notice: Undefined offset: 1 in...........
于 2013-10-29T10:36:21.960 に答える