Ajouter un temps à une date en PHP

Résolu/Fermé
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 - 19 janv. 2010 à 11:47
Bertrand40 Messages postés 1193 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 - 19 janv. 2010 à 14:54
Bonjour, je souhaiterais créer une fonction qui me permet d'ajouter un temps à une date passé en paramètre sous la forme 2009-03-12 11:00:00.

J'ai pensé à faire un mktime de cette date pour la retrouver sous forme d'un entier puis d'y ajouter le temps que je veux (en seconde) et de redéfinir la date sous forme Y-m-d H:i:s et donc voici mon code:
$new_date = mktime($date);
$new_date = $new_date + (60*60*24);
$date = date( "Y-m-d H:i:s", $new_date);


Mais le problème est que ça me retourne: 2010-04-13 17:47:10

Où est mon problème svp?

7 réponses

Bertrand40 Messages postés 1193 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 192
19 janv. 2010 à 12:25
Bonjour,

Je pense que ton erreur vient du fait que tu ne peux pas entrer le paramètre complet dans le mktime : il faut entrer un paramètre pour chacun des composants du temps :

mktime(heure, min, sec, jour, mois, année)

Donc si ta date de départ est : 2009-03-12 11:00:00

$new_date = mktime(11, 0, 0, 3, 12, 2010);
$new_date = $new_date + (60*60*24);
$date = date( "Y-m-d H:i:s", $new_date);
0
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 44
19 janv. 2010 à 12:27
Le problème est que $date est une chaîne de caractère donc il faut que je trouve un moyen de la décomposer.. :/
0
Bertrand40 Messages postés 1193 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 192
19 janv. 2010 à 12:42
Je t'ai fait un petit truc mais sache que je suis pas calé.. Autrement dit il existe certainement plus simple.

$date = '2009-03-12 11:00:00';
$date=str_replace('-', ' ', $date);
$date=str_replace(':', ' ', $date);
$date=explode(' ', $date);
for ($i = 0; $i <=5; $i++) echo '' . $date[$i] . '<br />';
0
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 44
19 janv. 2010 à 13:01
Ca ne fonctionne pas :/

Voilà mon nouveau code:
$date=str_replace('-', ' ', $date);
$date=str_replace(':', ' ', $date);
$date=explode(' ', $date);
$new_date = mktime($date[0], $date[1], $date[2], $date[3], $date[4], $date[5]);
$new_date = $new_date + (60*60*24*10);
$date = date( "Y-m-d H:i:s", $new_date);


En nouvelle date, j'ai 2001-02-01 17:03:12
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bertrand40 Messages postés 1193 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 192
19 janv. 2010 à 13:08
Normal tu t'es trompé dans l'ordre. Je viens de tester et ça fonctionne :

$date = '2009-03-12 11:00:00';
$date=str_replace('-', ' ', $date);
$date=str_replace(':', ' ', $date);
$date=explode(' ', $date);

$new_date = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]);
$new_date = $new_date + (60*60*24);
echo $new_date = date( "Y-m-d H:i:s", $new_date);
0
Absot Messages postés 777 Date d'inscription mardi 28 octobre 2008 Statut Membre Dernière intervention 4 septembre 2020 44
19 janv. 2010 à 14:04
Ah ouai ça marche, j'ai été trop vite :D

Merci, je mets en résolu. :)
0
Bertrand40 Messages postés 1193 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 192
19 janv. 2010 à 14:54
De rien :)
0