Code php pour incrémenter les mois [Résolu]

- - Dernière réponse :  yamya - 5 juin 2013 à 19:36
Bonjour à tous,
J'ai besoin d'une fonction PHP à qui on donnerait un mois (ex: Juillet 2012) et un nombre de mois à ajouter (ex:3) et retournerait le mois correspondant à l'addition des deux paramètres (ex: Octobre 2012).
Ex: Fonction (2/2014, 4) retournerait 6/2014
Fonction (4/2012, 12) retournerait 4/2013
Merci de bien vouloir me venir en aide si vous pouvez
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
1310
Date d'inscription
samedi 31 janvier 2009
Dernière intervention
5 juin 2013
3
Merci
Salut,

Tout ceci existe déjà, c'est géré par les classes DateTime et DateInterval. Bref, ça ne sert à rien de vouloir absolument réinventer la roue. Un petit exemple :

<?php

function disp($d)
{
  echo $d->format('Y-m-d H:i:s'), PHP_EOL;
}

$dt = new DateTime();
disp($dt);

$dt->add(new DateInterval('P3M'));
disp($dt);

$dt->add(new DateInterval('P1YT8H10M'));
disp($dt);

$dt->sub(new DateInterval('P5YT23H'));
disp($dt);

Et ce que ça a donné à l'heure à laquelle je l'ai lancé :
-> php date.php
2013-01-18 17:30:00
2013-04-18 17:30:00
2014-04-19 01:40:00
2009-04-18 02:40:00

Pour ceux qui auraient la flemme de chercher dans al doc, sachez que le constructeur de DateTime accepte en premier paramètre une chaîne décrivant une date/heure afin de l'utiliser au lieux de la date et l'heure courantes.

Merci TychoBrahe 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de TychoBrahe
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
0
Merci
Montre ce que t'as fait, ne t'imagine pas qu'on va coder ça à ta place.

L'algorithme est plus que trivial :
* Ajouter x à la date (les deux sont des paramètres)
* Si le mois de la date est > 12, le remettre à 1 et incrémenter l'année
* Retourner la nouvelle date

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
0
Merci
Merci, ghuysmans99.
Merci pour l'algo.
J'ai pu faire avec une date en forme jj/mm/aaaa se trouvant dans la variable $date et le pas d'incrémentation se trouvant dans la variable $nbrmois:

$Date1= explode ("/",$date);
$mois=$Date1[1];
$an=$Date1[2];

$mois=$mois+$nbrmois;

While ($mois>12){
$mois=$mois-12;
$an=$an+1;
}
$Date2=$mois.'/'.$an;

ca a réussi. Merci
Commenter la réponse de mwuhid1
Messages postés
197
Date d'inscription
mardi 20 janvier 2004
Dernière intervention
20 février 2013
0
Merci
Bonjour,

tu peux utiliser la fonction mktime aussi.

date_default_timezone_set('Europe/Paris');
function addMonth($date, $month = 0)
{
    $date = explode('/', $date);
    $date = mktime(0, 0, 0, $date[0] + $month, 1, $date[1]);
    return date('m/Y', $date);
}




bonne journée
Commenter la réponse de cs_47
Commenter la réponse de yamya
0
Merci
salut svp je voudrais savoir comment à partir d'un formulaire d'insertion générer le matricule(à partir du choix)par exemple si je choisit
specialite informatique le premier champ du matricule est I et ainsi de suite.
l'idée est avec un tableau en php qui contient les champs de cette matricule avec (les 3 derniers champs s'incrémentent automatiquement) et avec des conditions if ?,

exemple : matricule = I13001 , I13002 , M13008.... (i : informatique; M: mathématique , 13 : année 2013 , 001 : les 3 champs qui s'incrimentes automatiquement )
merci bcp
Commenter la réponse de yamya
0
Merci
yamya,
je pense que vous feriez mieux de relancer une nouvelle discussion pour que votre problème soit vu par un plus grand nombre de personnes pouvant y apporter une solution
Commenter la réponse de mwuhid1
Commenter la réponse de yamya

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.