60 votes

Ajout d'une heure à la variable temps

J'ai une heure à laquelle je veux ajouter une heure :

$time = '10:09';

J'ai essayé :

$time = strtotime('+1 hour');

strtotime('+1 hour', $time);

$time = date('H:i', strtotime('+1 hour'));

Mais aucune des solutions ci-dessus ne fonctionne.

115voto

paulcol. Points 2464

Ça a marché pour moi.

$timestamp = strtotime('10:09') + 60*60;

$time = date('H:i', $timestamp);

echo $time;//11:09

Explication :

strtotime('10:09') crée un horodatage numérique en secondes, quelque chose comme 1510450372 . Il suffit d'ajouter ou de retirer la quantité de secondes dont vous avez besoin et d'utiliser date() pour le reconvertir dans un format lisible par l'homme.

$timestamp = strtotime('10:09') + 60*60; // 10:09 + 1 hour
$timestamp = strtotime('10:09') + 60*60*2; // 10:09 + 2 hours
$timestamp = strtotime('10:09') - 60*60; // 10:09 - 1 hour

time() crée également un timestamp numérique mais pour le moment. Vous pouvez l'utiliser de la même manière.

$timestamp = time() + 60*60; // now + 1 hour

28voto

Azam Alvi Points 1148

Vous pouvez faire comme ceci

    echo date('Y-m-d H:i:s', strtotime('4 minute'));
    echo date('Y-m-d H:i:s', strtotime('6 hour'));
    echo date('Y-m-d H:i:s', strtotime('2 day'));

16voto

Frosty Z Points 8935
$time = '10:09';
$timestamp = strtotime($time);
$timestamp_one_hour_later = $timestamp + 3600; // 3600 sec. = 1 hour

// Formats the timestamp to HH:MM => outputs 11:09.
echo strftime('%H:%M', $timestamp_one_hour_later);
// As crolpa suggested, you can also do
// echo date('H:i', $timestamp_one_hour_later);

Consultez le manuel PHP pour strtotime() , strftime() y date() pour les détails.

BTW, dans votre code initial, vous devez ajouter des guillemets, sinon vous obtiendrez des erreurs de syntaxe PHP :

$time = 10:09; // wrong syntax
$time = '10:09'; // syntax OK

$time = date(H:i, strtotime('+1 hour')); // wrong syntax
$time = date('H:i', strtotime('+1 hour')); // syntax OK

15voto

Mayank Vadiya Points 548

Essayez ceci, ça a marché pour moi.

$time="10:09";
$time = date('H:i', strtotime($time.'+1 hour'));
echo $time;

11voto

Learner Points 3627

Mise à jour 2020

C'est bizarre que personne n'ait suggéré la méthode OOP :

$date = new \DateTime(); //now
$date->add(new \DateInterval('PT3600S'));//add 3600s / 1 hour

OU

$date = new \DateTime(); //now
$date->add(new \DateInterval('PT60M'));//add 60 min / 1 hour

OU

$date = new \DateTime(); //now
$date->add(new \DateInterval('PT1H'));//add 1 hour

Extrayez-le dans une chaîne de caractères au format :

var_dump($date->format('Y-m-d H:i:s'));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X