Ajouter 6 mois à la date courrante

Ajouter 6 mois à la date courrante - PHP - Programmation

Marsh Posté le 08-08-2005 à 20:52:04    

Bonjour
 
Je manipule pas très bien les dates. J'aimerai ajouter 6 mois à la date courrante.
 
Voila mon code, qu'est ce que je dois ajouter après pour mettre 6 mois de plus ?
 
Ma question est assez basique je sais.
 

Code :
  1. $date = time();


Reply

Marsh Posté le 08-08-2005 à 20:52:04   

Reply

Marsh Posté le 08-08-2005 à 21:18:37    

$date = strtotime('+6 month', $date)

Reply

Marsh Posté le 08-08-2005 à 21:23:53    

C'est quoi 6 mois de plus?
 
Même jour, janvier --> juillet ?
Ou 26 semaines de plus, 180 jours de plus, ...
 
6 mois après les 29, 30, 31 août, c'est bien le 28 (29 bissextile) février? Ca pose pas de problème dans ton projet?

Reply

Marsh Posté le 09-08-2005 à 01:33:40    

Justement je sais pas comment je dois faire pour gérer les années bissextiles.
 
Il me faut 6 mois de plus en suivant le calendrier.

Reply

Marsh Posté le 09-08-2005 à 01:58:27    

C'est pour une entreprise et l'écart entre 2 dates est primordial (style projet où 179 jours devant soi, c'est pas 180)?
 
Il y a encore 365 (ou 366) /2 comme méthode. Pas trop mal si tu as pas à t'occuper des jours ouvrés/ouvrables mais déroutant si c'est le "dd" qui compte ou bien le jour de la semaine (lundi-->lundi)  :pt1cable:  
 
J'avais le problème pour Excel et c'est sur la page suivante que j'avais vu toutes les possibilités: http://www.mvps.org/dmcritchie/excel/datetime.htm#add
Pour PHP, une fois que tu as choisi ta solution la plus adaptée à ton problème, il existe peut-être une fonction "toute faite" :)

Reply

Marsh Posté le 09-08-2005 à 02:53:02    

Merci pour ton lien phosporus je vais etudier ça.
 
C'est effectivement pour une entreprise donc je dois avoir un résultat fiable qui tient compte de nombre de jours précis qu'il y a dans chaque mois.
Vraiment les gens qui ont inventé le mois de février je les déteste

Reply

Marsh Posté le 09-08-2005 à 08:49:06    

solution crade mais qui marche a tous les coups:
tu te connecte a une bdd mysql , tu lances une requete  
 
Select date_add($tadate,interval 6 month)
 
tu recuperes le resultat et tu fermes ta connexion

Reply

Marsh Posté le 09-08-2005 à 12:49:17    

avec date et mktime ....
 

Code :
  1. $dans_six_mois = mktime(0,0,0,date("m" ) + 6  ,date("d" ) ,date("Y" )    );


 
tu obtiens un timestamp de la date dans 6 mois. mktime tient compte tout seul de tout ce qui te posse problème ( année bisextile, mois de février ... )
 
@+
 
exemple : http://blap.serveftp.com/date.php

Code :
  1. <?
  2. $now = time();
  3. $dans_six_mois =  mktime(0,0,0,date("m" ) + 6  ,date("d" ) ,date("Y" ));
  4. echo date("d m Y", $now)."<br />";
  5. echo date("d m Y", $dans_six_mois);
  6. ?>


Message édité par bl@p_psx le 09-08-2005 à 12:57:23

---------------
:Moultiplayers:.:Quatuor Chevalier:.:Admin G15-france.com:.:Wiki -G15-france:.:-Papa-:.
Reply

Marsh Posté le 09-08-2005 à 23:30:23    

Merci pour votre aide c'est vraiment sympa. J'ai utilisé ta méthode bl@p_psx c'est nickel.
 
J'aurai une autre question si je puis me permettre. J'aimerai recuperer les 6 derniers id d'une table.
 
J'ai une requete ou je recupere le dernier et je soustrais 6. Le problème c'est que si les id ne se suivent pas ça marche pas.
 
Donc j'aimerai savoir si vous avez une idée pour ça ?

Reply

Marsh Posté le 10-08-2005 à 00:08:00    

si tu utilises une base MySQL, comptes le nombres d'id (count(id)) puis tu fais une requête utilisant la clause ORDER BY id et LIMIT

Reply

Marsh Posté le 10-08-2005 à 00:08:00   

Reply

Marsh Posté le 10-08-2005 à 00:20:26    

Si je fais un truc dans ce genre la c'est bon
 

Code :
  1. $rq_id = 'SELECT (count(id_article)) as test FROM tbl_article WHERE supr_article = 0 ORDER BY id_article DESC';
  2.     $resultat_id = mysql_query($rq_id);
  3.     $dernier_id = mysql_fetch_array($resultat_id);
  4.    
  5.     $id = $dernier_id['test'] ;
  6.    
  7. $rq_article = 'SELECT * FROM tbl_article WHERE id_article >= '.$id.'  LIMIT 6 ';


Message édité par skynicko le 10-08-2005 à 00:21:48
Reply

Marsh Posté le 10-08-2005 à 20:21:50    

skynicko a écrit :

Si je fais un truc dans ce genre la c'est bon
 

Code :
  1. $rq_id = 'SELECT (count(id_article)) as test FROM tbl_article WHERE supr_article = 0 ORDER BY id_article DESC';
  2.     $resultat_id = mysql_query($rq_id);
  3.     $dernier_id = mysql_fetch_array($resultat_id);
  4.    
  5.     $id = $dernier_id['test'] ;
  6.    
  7. $rq_article = 'SELECT * FROM tbl_article WHERE id_article >= '.$id.'  LIMIT 6 ';



 
Du tout !

Code :
  1. $q = mysql_query("SELECT id_article
  2. FROM tbl_article
  3. WHERE supr_article=0
  4. ORDER BY id DESC
  5. LIMIT 6 " );
  6. $lst_ids = array();
  7. while($r = mysql_fetch_array($q)) $lst_ids[] = $r['id_article'];
  8. if(count($lst_ids)) {
  9.   $liste_derniers_id = implode(',',$lst_ids);
  10.   $rq_article = "SELECT teschamps FROM tbl_article WHERE id_article IN ($liste_derniers_id)";
  11.   /* suite de ton code */
  12. }


PS : j'aime pas aider ceux qui ne cherche pas mais j'avais rien a faire lol
PS2 : apprends un peu plus le SQL, select * c'est tres mauvais


Message édité par Profil supprimé le 10-08-2005 à 20:24:29
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed