web-dev-qa-db-fra.com

comment soustraire 24 heures de l'objet date-heure dans PHP

J'ai le code suivant:

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

Cependant, maintenant cela me donne cette erreur:

A non well formed numeric value encountered in...

pourquoi est-ce?

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

ou

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

(Ce dernier prend en compte ce commentaire car c'est un point valable.)

Ça devrait marcher pour vous ici. Voir http://PHP.net/datetime

$ date sera une instance de DateTime , un objet DateTime réel.

49
vascowhite

strtotime() s'attend à un horodatage Unix (qui est 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.

je suggérerais cependant d'utiliser la bibliothèque datetime, car c'est une approche plus orientée objet.

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

L'avantage de ceci est que vous pouvez réutiliser la 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.
28
Joel Harkes

vous pouvez le faire de plusieurs façons ...

echo date('Y-m-d H:i:s',strtotime('-24 hours')); // "i" for minutes with leading zeros

OR

echo date('Y-m-d H:i:s',strtotime('last day')); // 24 hours (1 day)

Sortie

2013-07-17 10:07:29
10
Sumit Bijvani

Cela peut être utile pour vous:

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

//check the date
echo $date;
3
Sundar
$now = date("Y-m-d H:i:s");
$date = date("Y-m-d H:i:s", strtotime('-24 hours', strtotime($now)));

Ajouter "strtotime" avant $ maintenant, Et Y-m-d H: m: s remplacer par Y-m-d H: i: s

1
Dipen Soni

cela devrait fonctionner aussi 

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

Vous pouvez simplement utiliser time() pour obtenir l’horodatage actuel.

$date = date("Y-m-d H:m:s", strtotime('-24 hours', time()));
1
Amal Murali

tout ce que vous avez à faire est de modifier votre code pour être 

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