8

重複の可能性:
PHPの日時

ユーザーが入力した日時に1秒を追加しようとすると、$ values['start_date_'。$j.'-'。$i]は有効な日時文字列ですが、次のコードはエラーをスローします

$priceStart = date('Y-m-d H:i:s',strtotime($values['start_date_'.$j.'-'.$i]));
date_modify($priceStart, '+1 second');
$priceStart =date_format($priceStart, 'Y-m-d H:i:s');

エラーは「date_modify()はパラメータ1がDateTimeであり、文字列は...オンラインで指定されていることを期待しています...」です。date_format()でも同じエラーが発生します。

これの正しい構文は何ですか?

4

2 に答える 2

24

DateTime代わりにオブジェクトを使用してください。これははるかに強力で簡単です。

$priceStart = new DateTime("@" . strtotime($values['start_date_'.$j.'-'.$i]));
$priceStart->modify("+1 second"); //You're pretty much done here!
echo $priceStart->format("Y-m-d H:i:s"); //Just to see the result.
于 2012-05-11T19:48:54.870 に答える
14

date()あなたに文字列を与えます。date_modifyDateTimeオブジェクトが必要です。

必要なことを行う最も簡単な方法は、次の値によって返される値に1を追加することですstrtotime()

$priceStart = date('Y-m-d H:i:s',strtotime($values['start_date_'.$j.'-'.$i]) + 1);

または、DateTimeオブジェクトを作成できます。

$priceStart = new DateTime('@' . strtotime($values['start_date_'.$j.'-'.$i]));

残りのコードが機能し始めるはずです。

于 2012-05-11T19:45:20.477 に答える