Problème d'algo pour le jour suivant d'une date - PHP - Programmation
Marsh Posté le 13-01-2015 à 15:36:32
Et comment tu comptes gérer le changement d'année ? et le passage du 28 février au 29 tous les 4 ans ?
Tu peux fixer ton problème de manière fiable en 3 lignes:
Transforme ses 3 éléments ($a $m $j) en un objet DateTime.
Ajoute une intervalle d'une journée à ton objet DateTime créé au dessus.
Affiche ton dateTime sous le format de ton choix...
Et un peu de lecture, histoire que tu bosses un peu quand même :
http://php.net/manual/fr/class.datetime.php
http://php.net/manual/fr/class.dateinterval.php
Marsh Posté le 13-01-2015 à 15:39:37
Salut,
Premièrement je te conseille de te munir d'un calendrier afin d'en étudier son fonctionnement car "au 31 de chaque mois" ne correspond pas vraiment à notre calendrier.
Deuxièmement ton problème est causé par le fait que tu fais une vérification après le changement de mois, cela peut se faire, seulement il faut te rappeler que dans ce cas là il faut corriger la valeur et donc qu'elle est fausse. Or tu supposes une valeur de 12 mois pour changer d'année, valeur qui n'est pas erronée puisqu'il y a bien 12 mois dans une année.
Marsh Posté le 13-01-2015 à 15:41:57
Merci beaucoup pour ta réponse !
Je sais que je peux le faire à l'aide de cette fonction merci beaucoup Mais on me demande d'écrire moi même l'algo permettant cela et de le calculer manuellement sans utiliser les fonction propres à PHP ..
Je sais que ce serais plus simple autrement mais la consigne étant là je peux pas faire autrement
Marsh Posté le 13-01-2015 à 15:59:08
Si tu bloques toujours, il te suffit de simuler toi-même ton algorithme, à chaque ligne tu écris les valeurs de tes variables et tu regardes ce que ça donne. Tu trouveras vite le problème.
Marsh Posté le 14-01-2015 à 17:23:10
Petit conseil : tu peux définir un tableau qui contient pour chaque n° de mois, le nb de jours max.
Ex : $NBJ = array(1 => 31, 2 => 28, 3 => 31, 4 => 30...);
Ainsi, pour avoir le nb de jours d'un mois : $NBJ[$mois]
Avec le cas particulier de février à gérer. Une année est bissextile si elle est :
* divisible par 4 mais non divisible par 100.
* divisible par 400.
Si ton année répond à l'un de ces 2 critères, le mois à 29 jours.
Après, y'a plus que le cas du 31/12 à gérer pour le changement d'année.
Marsh Posté le 13-01-2015 à 15:26:29
Bonjour,
Je bloque sur un exercice de programmation en PHP, vous trouverez l'énoncé en dessous
1.5. Écrire un algorithme fournissant à partir d'une date donnée sous la forme de 3 entiers ($jour, $mois,
$année) la date du lendemain.
J'ai réussi à gérer le passage d'un mois à l'autre au 31 de chaque mois avec le retour au premier du mois mais je ne parviens pas à passer d'une année à l'autre. Au lieu de passer de 31/12/xxxx à 01/01/xxxx+1 mon algo me sort 01/13/xxxx
Voilà ce que j'ai programmé :
//1.5
$a=2014;
$m=12;
$j=31;
//Controle validité J M
if ($j>31) {
echo "il y à une erreur dans le jour";
}
if ($m>12) {
echo "il y à une erreur dans le mois";
}
//Si dernier jour du mois
if ($j<31) {
$j=$j+1;}
else {
if ($j==31) {
$j=1;
$m=$m+1;}
if ($m==12) {
$m==1;
$a==$a+1;}
echo "demain nous seront le $j $m $a";}
Ca fais quelque heures que je bloque dessus je ne réussis pas à m'en sortir. Pouvez vous me donner un petit coup de main ?
Merci d'avance !