Ajouter un temps à une date en PHP

Résolu
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. Ah ouai ça marche, j'ai été trop vite :D

    Merci, je mets en résolu. :)
    0
    1. 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
      1. 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
        1. 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
          1. 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
            1. 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