Table des matières :
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()
Entrepreneur et Geek depuis plus de 20 ans.
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/)
@+
Merci archi cool !
Merci beaucoup pour cet article. Cela m’a aidé.
Très utile…grand merci. Je conçois actuel une application de gestion d’hotel capable de determiner l’heure, le jour , le mois et l’annee exacte de fin de sejour du client automatiquement. Avec ce tuto, j’ai pû avoir des idées. Merci encore…Bonne continuation !
ATTENTION : Ne fonctionne pas pour calculer une date après 2038 car basé sur un timestamp.
merci pour cette publication,