Soyez le premier à donner votre avis sur cette source.
Snippet vu 15 751 fois - Téléchargée 29 fois
<?php function liste_mois($date_debut, $date_fin) { $date_suite = array(); //on flingue les tirets des dates list($jour1, $mois1, $annee1) = explode("-", $date_debut); list($jour2, $mois2, $annee2) = explode("-", $date_fin); //on récupère le nombre de mois entre les deux dates $nombre_mois = (($annee2 - $annee1)*12 + ($mois2 - $mois1)); //on incrémente chaque mois depuis la date début jusquà la date fin for($i = 0; $i < $nombre_mois; $i++){ $mois = ($mois1 + $i); //comptage du nombre de jour dans le mois +$i $jour = date("j", mktime(0, 0, 0, $mois+1, 0, $annee1)); //si le nombre de jour du mois +$i < au jour de la date fixée if($jour < $jour1){ //on mets le dernier jour du mois +$i $date = date('d-m-Y', (mktime(0, 0, 0, $mois, $jour, $annee1))); }else{ //sinon on traite la meme date du mois +$i $date = date('d-m-Y', (mktime(0, 0, 0, $mois, $jour1, $annee1))); } $date_suite[] = $date; } return $date_suite; } print_r(liste_mois('31-12-2005','15-08-2006')); ?>
Voici un premier jet de résultat :
Array ( [0] => 31-12-2005 [1] => 31-01-2006 [2] => 28-02-2006 [3] => 31-03-2006 [4] => 30-04-2006 [5] => 31-05-2006 [6] => 30-06-2006 [7] => 31-07-2006 )
Je reprendrais le code plus tard pour étaler les dates sur les semaines, voir du bimensuel, trimestriel, semetriel...
Donc ce que je t'ai dit n'était pas correct : les dates seront valides, effectivement.
Par contre l'écart est imprévisible...enfin si, il l'est...plus exactement : il va varier. Et ce parce que tu te bases toujours sur le 1er jour donné en argument, ton écart ne sera donc pas constant.
Mais ça, c'est peut-être ce qu'il te faut :-)
Néanmoins, je pense sincèrement que cette fonction devrait être plus complète, avec un écart de jours donné, voire de mois, ou de semaines ? Et peut-être penser aux jours non ouvrés. De même, justement, concernant cet écart, laisser l'opportunité de modifier la règle de fonctionnement. Ici, on passe au mois suivant : est-ce souhaitable ? Dans le cadre de comptes, je ne suis pas sûr que sauter le mois de février soit une bonne chose ;-)
Bien vu.
Mais ce qui est étonnant c'est de voir que je n'ai aucune date incohérante concernant tes exemples.
exemple entre 30-12-2005 et 15-08-2006 :
Array ( [0] => 30-12-2005 [1] => 30-01-2006 [2] => 02-03-2006 [3] => 30-03-2006 [4] => 30-04-2006 [5] => 30-05-2006 [6] => 30-06-2006 [7] => 30-07-2006 )
Est-ce la configuration du serveur qui agit sur les dates ???
Mais il est vrai que je vais plancher sur la détection du nombre de jour dans le mois pour rendre les virements plus cohérants.
Merci de la remarque MALALAM.
ce code a un soucis : il ne sort pas forcément des dates valides.
Deux exemples :
si je donne comme dates d'entrée : 30/12/2005 et 15/08/2006, il va me sortir le 30/02/2006, date qui n'existe pas.
De même, si je rentre le 31/12/2005 au 15/08/2010, il va me sortir beaucoup de dates n'existant pas.
Puisque ce code est utilisé pour faire tes comptes, tu devrais y réflêchir, parce que tu vas avoir un décalage avec ta banque ;-)
Il sera intéressant que tu mettes à jour ce code avec les modifications qui s'imposent, d'ailleurs :-)
Voire que tu permettes dans la fonction de choisir l'écart souhaité entre les dates entrées, parce que là, c'est un peu limitatif.
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.