PHP : calculer la date dans X mois

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

PHP : calculer la date dans X mois

Message par guilhem_mdg »

En PHP, comment calculer la date dans 2 mois ?

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Cordialement.
Guilhem.
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

Salut,

Code : Tout sélectionner

$dans_deux_mois = date("d/M/Y", mktime(0, 0, 0, (date('n')+2), date('j'), date('Y')));
date('n') est celui qui te sort le mois sans les zéros initiaux (pour le calcul)
idem pour date('j') et les jours, même si je crois que ça fonctionne avec date('d')

Voir la doc PHP :
date
mktime

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
guilhem_mdg
Lézard à collerette
Messages : 438
Inscription : 18 juin 2004, 09:13

Message par guilhem_mdg »

Noooooon !!!!
As-tu fait le test pour 1 mois ? Regarde la date qu'il te renvoie...
Il s'agit d'un vieux bug PHP car 1 mois = 31 jours...
J'ai trouvé en fait en faisant une fonction :

Code : Tout sélectionner

// (01,2007,1) -> (12/2006)
// (01,2007,12) -> (1/2006)
function dateMoinsXMois($moisDepart,$anneeDepart,$nbMoisAEnlever){
	$moisCalcule = $moisDepart - $nbMoisAEnlever;
	$anneeCalculee=$anneeDepart;
	while($moisCalcule<=0){
		$moisCalcule=$moisCalcule+12;
		$anneeCalculee=$anneeCalculee-1;
	}
	return $moisCalcule.'/'.$anneeCalculee;
}
C'est pour -x mois...
Merci !!!

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Cordialement.
Guilhem.
Asumbaa
Tyrannosaurus Rex
Messages : 2411
Inscription : 08 déc. 2004, 20:07

Message par Asumbaa »

guilhem_mdg a écrit :Noooooon !!!!
As-tu fait le test pour 1 mois ? Regarde la date qu'il te renvoie...
Il s'agit d'un vieux bug PHP car 1 mois = 31 jours...
Il renvoit quoi ? 31 février ? :lol: (non, je n'ai pas testé, je n'ai pas d'environnement de dev sous la main. J'essayais juste de t'aider)

C'est bizarre parce que sur les jours, il s'en sort très bien. 27 février plus deux jours t'amène bien au 1 mars les années non bissextiles.


Par ailleurs quand tu poses une question et que tu as déjà potassé le sujet, il serait agréable que tu expliques ce que tu as déjà essayé (et qui ne marche pas, et pourquoi), ça m'aurait évité de perdre mon temps à vérifier la syntaxe de ce que je te proposais.

Message envoyé avec : Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Sinon, essaie aussi:

Code : Tout sélectionner

$dans_deux_mois = date("d/M/Y", strtotime("now +2 month"));
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 5 invités