0

今、私はDateTimeクラスを使用してさまざまな時間形式に変換していますが、1 つの機能を除いて非常に便利です。ユーザーが日付を追加しようとする前に、何らかの理由00:00:00で、私にとって十分な時間のために取得した時間をスキップしました。さて、DateTime時間が含まれていない場合、クラスではエラーが返されます。これが私のコードです:

    $dt = DateTime::createFromFormat("d.m.Y H:i:s", $data['event_time']);

    if($dt === false)
    {
        throw new Exception("Invalid date");
    }

    $formattedDate = $dt->format('Y-m-d H:i:s');

時間なしで日付を挿入しようとするたびに、Invalid dateエラーが発生します。これでエラーが発生することを除いて、時間の場所にゼロを挿入する方法はありますか?

ありがとう

レロン

4

2 に答える 2

3

いくつかの簡単な事前検証:

$date['event_time'] = trim($date['event_time']);
if (preg_match('/^\d{2}\.\d{2}\.\d{4}$/', $date['event_time'])) {
    $date['event_time'] .= ' 00:00:00';
} else if (!preg_match('/^\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}:\d{2}$/', $date['event_time'])) {
    die('Invalid format');
}
于 2012-06-22T07:30:42.487 に答える
0

正規表現を使用したくない場合は、これも機能するはずです。私があなただったら、これの代わりに @deceze ソリューションを使用します:P しかし、完全を期すために、ここにあります:

$dt = DateTime::createFromFormat("d.m.Y H:i:s", $data['event_time']);

if($dt === false)
{
    $data['event_time'] = trim($data['event_time']);
    $data['event_time'] .= " 00:00:00";
    $dt = DateTime::createFromFormat("d.m.Y H:i:s", $data['event_time')
    if ($dt === false) {
      throw new Exception("Invalid date");
    }
}

$formattedDate = $dt->format('Y-m-d H:i:s');
于 2012-06-22T07:45:00.497 に答える