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

mwuhid1 - 16 janv. 2013 à 22:20 - 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 

8 réponses

Répondre au sujet
TychoBrahe 1310 Messages postés samedi 31 janvier 2009Date d'inscription 5 juin 2013 Dernière intervention - 18 janv. 2013 à 17:35
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de TychoBrahe
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 16 janv. 2013 à 23:44
0
Utile
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
Utile
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
cs_47 197 Messages postés mardi 20 janvier 2004Date d'inscription 20 février 2013 Dernière intervention - 17 janv. 2013 à 10:36
0
Utile
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
Utile
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
Utile
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.