43

次のコードがあります。

  $now = date("Y-m-d H:m:s");
  $date = date("Y-m-d H:m:s", strtotime('-24 hours', $now));

ただし、今では次のエラーが表示されます。

A non well formed numeric value encountered in...

どうしてこれなの?

4

10 に答える 10

65
$date = (new \DateTime())->modify('-24 hours');

また

$date = (new \DateTime())->modify('-1 day');

(後者は有効な点であるため、このコメントを考慮に入れています。)

ここでうまくいくはずです。http://PHP.net/datetimeを参照してください

$date は、実際の DateTime オブジェクトであるDateTimeのインスタンスになります。

于 2013-07-18T08:17:54.843 に答える
49

strtotime()unix タイムスタンプが必要です (これは ですnumber seconds since Jan 01 1970)

$date = date("Y-m-d H:i:s", strtotime('-24 hours', time())); ////time() is default so you do not need to specify.

ただし、よりオブジェクト指向のアプローチであるため、datetime ライブラリを使用することをお勧めします。

$date = new DateTime(); //date & time of right now. (Like time())
$date->sub(new DateInterval('P1D')); //subtract period of 1 day

これの利点は、以下を再利用できることですDateInterval

$date = new DateTime(); //date & time of right now. (Like time())
$oneDayPeriod = new DateInterval('P1D'); //period of 1 day
$date->sub($oneDayPeriod);
$date->sub($oneDayPeriod); //2 days are subtracted.
$date2 = new DateTime(); 
$date2->sub($oneDayPeriod); //can use the same period, multiple times.

カーボン (アップデート 2020)

PHP で DateTimes を処理するための最も一般的なライブラリはCarbonです。

ここでは、次のようにします。

$yesterday = Carbon::now()->subDay();
于 2013-07-18T08:17:54.767 に答える
3

これはあなたに役立つかもしれません:

//calculate like this
$date = date("Y-m-d H:m:s", (time()-(60*60*24)));

//check the date
echo $date;
于 2013-07-18T08:19:31.443 に答える
2

これもうまくいくはずです

$date = date("Y-m-d H:m:s", strtotime('-24 hours'));
于 2013-07-18T08:18:47.427 に答える