web-dev-qa-db-fra.com

PHP, utiliser strtotime pour soustraire des minutes d'une variable date-heure?

J'ai besoin de soustraire 45 minutes de la variable date-heure en PHP.

Le code:

$thestime = '2012-07-27 20:40';
$datetime_from = date("Y-m-d h:i",strtotime("-45 minutes",strtotime($thestime)));
echo $datetime_from;

renvoie le résultat 2012-07-27 07:55.

Ça devrait être 2012-07-27 19:55, bien que. Comment puis-je réparer ça?

16
Klausos Klausos

Tu devrais faire:

$datetime_from = date("Y-m-d H:i", strtotime("-45 minutes", strtotime($thestime)));

Avoir H au lieu de h signifie qu'un format de 24 heures est utilisé, représentant l'heure avec des zéros en tête: 00 à travers 23.

Vous pouvez en savoir plus à ce sujet dans la documentation de la fonction de date PHP .


Il existe également des façons orientées objet de le faire qui sont plus fluides, comme DateTime::sub :

$datetime_from = (new DateTime($thestime))->sub(DateInterval::createFromDateString('45 minutes'))->format('Y-m-d H:i')

Ou la manière encore plus expressive offerte par la bibliothèque Carbon qui étend la classe DateTime intégrée de PHP:

$datetime_from = (new Carbon($thestime))->subMinutes(45)->format('Y-m-d H:i');
40
Bogdan