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
- Alert php ✓ - Forum PHP
- Header php - Astuces et Solutions
- Excel mois en lettre ✓ - Forum Excel
- Undefined index php - Astuces et Solutions
- Retour a la ligne php ✓ - Forum PHP
2 réponses
Mihawk
Messages postés
4311
Date d'inscription
mercredi 29 mars 2006
Statut
Contributeur
Dernière intervention
6 janvier 2015
843
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 ;)