Ajouter un temps à une date en PHP

Résolu
Absot Messages postés 777 Date d'inscription   Statut Membre Dernière intervention   -  
Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   -
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 1196 Date d'inscription   Statut Membre Dernière intervention   194
 
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   Statut Membre Dernière intervention   44
 
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 1196 Date d'inscription   Statut Membre Dernière intervention   194
 
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   Statut Membre Dernière intervention   44
 
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 1196 Date d'inscription   Statut Membre Dernière intervention   194
 
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   Statut Membre Dernière intervention   44
 
Ah ouai ça marche, j'ai été trop vite :D

Merci, je mets en résolu. :)
0
Bertrand40 Messages postés 1196 Date d'inscription   Statut Membre Dernière intervention   194
 
De rien :)
0