Problème avec le mois de Février - PHP
Fermé
le_joker_fou
Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
-
Modifié par le_joker_fou le 27/01/2011 à 11:08
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 - 27 janv. 2011 à 14:33
le_joker_fou Messages postés 764 Date d'inscription mercredi 5 août 2009 Statut Membre Dernière intervention 7 août 2014 - 27 janv. 2011 à 14:33
A voir également:
- Problème avec le mois de Février - PHP
- Bug yahoo mail 27 fevrier 2024 - Accueil - Mail
- Easy php - Télécharger - Divers Web & Internet
- Retour a la ligne php ✓ - Forum PHP
- Formule excel date + 6 mois ✓ - Forum Excel
- Trier par mois excel - Guide
2 réponses
Mihawk
Messages postés
4315
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
846
27 janv. 2011 à 11:08
27 janv. 2011 à 11:08
Hello,
Je ne suis pas sûr que tu y coupes... Le traitement automatique est justement celui-ci : faire automatiquement basculer au mois suivant si tu tapes une date inexistante.
Je ne suis pas sûr que tu y coupes... Le traitement automatique est justement celui-ci : faire automatiquement basculer au mois suivant si tu tapes une date inexistante.
le_joker_fou
Messages postés
764
Date d'inscription
mercredi 5 août 2009
Statut
Membre
Dernière intervention
7 août 2014
239
Modifié par le_joker_fou le 27/01/2011 à 14:39
Modifié par le_joker_fou le 27/01/2011 à 14:39
Bon j'ai trouver la solution (j'aime pas mais bon ) :
Avec ce code tant que les jours de $date_valide sont supérieur à 3 on projettera la date au dernier jour du mois en cours.
exemple :
--> 03-03-2011 + 1 mois = 31-03-2011
--> 05-03-2001 + 1 mois = 31-04-2011
Si vous voulez tester sur une année complète :
Have Fun ;)
<?php //On additione notre mois à la date_valide $date_valide_tmp = date('Y-m-d',strtotime("+1 month", strtotime($date_valide))); //On récupère les informations propres et on regarde le nombre de jour que compose le nouveau mois list($year, $month, $day) = explode('-',$date_valide_tmp); $nb_jour = date('t',mktime(0,0,0,$month, $day, $year)); //Si les jours du nouveau sont inférieur à 4 (début du mois) ou a été trop loin. Maximum d'écart 3 => 28 Février + 1 mois = 3 Mars if($day<4) { //On soustrait les jour du début du mois pour nous rendre à la fin du mois précédent $date_valide = date('Y-m-d',strtotime("-$day day", strtotime($date_valide_tmp))); } //Sinon si le nombre de jour est inférieur ou égale au nombre de jour du mois en cours else if($day <= $nb_jour) { //On calcul la différence $difference = $nb_jour - $day; //Puis on l'ajoute à la date en cours. $date_valide = date('Y-m-d',strtotime("+$difference day", strtotime($date_valide_tmp))); } ?>
Avec ce code tant que les jours de $date_valide sont supérieur à 3 on projettera la date au dernier jour du mois en cours.
exemple :
--> 03-03-2011 + 1 mois = 31-03-2011
--> 05-03-2001 + 1 mois = 31-04-2011
Si vous voulez tester sur une année complète :
<?php $date_valide = "2011-01-04"; for($i=1;$i<=12;$i++) { echo '<br/>'."----------------------------------------------".'<br/>'; echo $date_valide.'<br/>'; $date_valide_tmp = date('Y-m-d',strtotime("+1 month", strtotime($date_valide))); list($year, $month, $day) = explode('-',$date_valide_tmp); $nb_jour = date('t',mktime(0,0,0,$month, $day, $year)); if($day<4) { $date_valide = date('Y-m-d',strtotime("-$day day", strtotime($date_valide_tmp))); } else if($day <= $nb_jour) { $difference = $nb_jour - $day; $date_valide = date('Y-m-d',strtotime("+$difference day", strtotime($date_valide_tmp))); } echo $date_valide.'<br/>'; } ?>
Have Fun ;)