Ajouter un temps à une date en PHP

Résolu
Absot Messages postés 819 Statut Membre -  
Bertrand40 Messages postés 1344 Statut Membre -
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?
Configuration: Windows XP
Firefox 3.0.17

7 réponses

  1. Bertrand40 Messages postés 1344 Statut Membre 197
     
    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
  2. Absot Messages postés 819 Statut Membre 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
  3. Bertrand40 Messages postés 1344 Statut Membre 197
     
    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
  4. Absot Messages postés 819 Statut Membre 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Bertrand40 Messages postés 1344 Statut Membre 197
     
    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
  7. Absot Messages postés 819 Statut Membre 44
     
    Ah ouai ça marche, j'ai été trop vite :D

    Merci, je mets en résolu. :)
    0
  8. Bertrand40 Messages postés 1344 Statut Membre 197
     
    De rien :)
    0