Tuto PHP : comment ajouter des jours / mois / années à une date donnée

Le 17/01/2012 par Jérôme PASQUELIN

La gestion des dates en PHP  est une partie assez complexe de ce langage de programmation, qui fait appel à une 50 aine de fonctions dédiées.
Dans cet article, vous trouverez des bouts de code très simples qui permettent de calculer une date future en fonction d’une date donnée et d’une durée.

Ces quelques exemples sont capables de gérer le changement d’année –si vous voulez rajouter 15 jours à partir du 25 décembre par éxemple-, de mois et aussi les années bissextiles.

Afficher la date du jour en PHP

Commençons ce tuto par l’affichage de la date du jour dans les 2 formats les  plus utilisés :

  • Date du jour complète avec l’heure :
    echo date(‘Y-m-d H:i:s’);
    //affiche 2013-09-03 11:38:18 – C’est aussi le format des colonnes DATETIME de MySQL
  • Date du jour simple :
    echo date(‘Y-m-d’);
    //affiche 2013-09-03 (format AAAA-MM-JJ)

Dans ces deux exemples, la casse des des paramètres qui sont passés à la fonction date est importante : majuscule ou minuscule va changer le format de sortie.
Chaque paramètre peut être separé par le caractère que vous souhaitez : dans nos exemples, nous avons utilisé l’espace, le tiret et les deux points.

Ajouter des jours à la date du jour

//Ajout de 15 jours
echo date(‘d-m-Y’, strtotime(‘+15 days’));

//Ajout de 20 jours
echo date(‘d-m-Y’, strtotime(‘+20 days’));

Vous l’aurez compris, le nombre après le ‘+’  correspond au nombre de  jours que vous voulez rajouter.
Le fonctionnement est identique pour les exemples suivants.

Ajouter des mois à la date du jour

//Ajout de 1 mois
echo date(‘d-m-Y’, strtotime(‘+1 month’));

//Ajout de 2 mois
echo date(‘d-m-Y’, strtotime(‘+2 month’));

Ajouter des années à la date du jour

//Ajout de 1 année
echo date(‘d-m-Y’, strtotime(‘+1 year’));

//Ajout de 2 années
echo date(‘d-m-Y’, strtotime(‘+2 year’));

strtotime() permet d’aller encore plus loin en ajoutant des minutes, des secondes, des heures, …
Je vous invite à consulter le guide de la fonction strtotime() sur php.net.

 

Calculer la date future par rapport à n’importe quelle date donné (pas forcément la date du jour)?

//date de départ : 01 avril 2013
$dateDepart = ’01-04-2013′;

//durée à rajouter : 6 mois;
$duree = 6;

//la première étape est de transformer cette date en timestamp
$dateDepartTimestamp = strtotime($dateDepart);

//on calcule la date de fin
$dateFin         = date(‘d-m-Y’, strtotime(‘+’.$duree.’ month’, $dateDepartTimestamp ));

Les explications du calcul effectué dans $dateFin

  • On appelle la fonction date() qui va nous renvoyer une date au format demandé, c’est à dire JJ-MM-AAAA (c’est le premier argument : ‘d-m-Y’)
    Si le 2eme argument est renseigné, elle renvoie la date par rapport au timestamp fourni. C’est pour ça que nous l’avons calculé dans $dateDepartTimestamp
  • Dans le deuxième argument, on va calculer le timestamp correspondant à la date de départ + la durée (6 mois) grâce à la fonction strtotime()

8 Responses to “Tuto PHP : comment ajouter des jours / mois / années à une date donnée”

  • Un grand merci pour ce post. Je ne connaissais pas la fonction mais elle s’avère très utile !

  • Merci !

    J’ai tapé calculer date php, premier résultat toi. tout de suite je trouve l’information. Si seulement ça se passait toujours comme ça. Mille merci mec !

  • Cool 🙂

  • Je ne me rappelais plus de la fonction, donc merci pour le rappel, même si je crois bien qu’il y a une autre solution plus efficace encore (mais orienté objet)

  • regarde du coté de la class datetime, bien plus pratique de nos jours…

  • Hello Tom, je vais refaire ça à l’occasion.
    Le plus pratique quand même c’est un bon drop database sur dom/boubadom lol (ou beta/tomate ça dépend ^^)

  • Merci bien pour ce petit tuto plein d’astuces !

    Juste pour préciser.. Que l’on ajoute des : secondes, des minutes, des heures, des mois, des jours, des années..

    Chacun d’eux doit être impérativement au SINGULIER.

    Donc dans le tuto il faudrait juste passer ça :

    echo date(‘d-m-Y’, strtotime(‘+15 days’));

    En ça :

    echo date(‘d-m-Y’, strtotime(‘+15 day’));

    Voilà, /!\ pour les amoureux du copier-coller ;p !

  • Salut, merci c’est très utile !

    Mais attention aux copié-collé comme le dit Delphine.

    Pour info, cette syntaxe fonctionne également :

    $startDay = « 2014-07-01 00:00:00 »;
    $currentDay = date(‘Y-m-d H:i:s’, strtotime($startDay.’ + 3 days’));
    echo $currentDay; //Cela donne « 2014-07-04 00:00:00 »

    Source : (http://www.developpez.net/forums/d953639/php/langage/debuter/operations-dates-calculs/)

    @+

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *