Probleme de Date

Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007 - 4 avril 2006 à 14:12
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007 - 4 avril 2006 à 20:07
Bonjour

J'ai developpé un agenda partagé qui marche nikel enfin jusqu'a ce qu'on remarque un probleme , on a un decalage des jours certaines semaines , je m'explique :
- une semaine j'aurai du mardi au samedi (normal)
- une autre j'aurai du lundi au vendredi (pas normal)
- encore une autre j'aurai du mercredi au dimance( pas normal non +)

En sachant que l'agenda comporte 6 semaines(1 semaines avant, semaine actuelle, 4 semaines après), l'incidence se voit sur les 6 semaines car en parametre de la fonction qui nous retourne les dates, on ne passe que le nombres de jours .
Voici la fonction :

function CalculDate2($nbjours)
{
setlocale(LC_TIME, "fr");//mets les variables systemes en mode local langue francaise
$today = getdate(); // le numero dans la semaine
$nbr_moins=$today['wday']-1; //Nombre de jours a ajouter ou a enlever pour arriver au lundi
$nbr_plus=5-$today['wday']; //Nombre de jours pour arriver au dimanche
$jour_semaine=strftime("%A");//le jour (lundi ..)
$jour=strftime("%d"); // le jour en numerique
$mois=strftime("%B"); // le mois en lettre
$annee=strftime("%Y"); // l'année en numérique
$date_fin_numerique=mktime($jour,$mois,$annee)+(60*60*24*(28+$nbr_plus)); //d apres le timestamp en numerique
$date_fin_calendrier=strftime("%Y%m%d",$date_fin_numerique);//strftime traduit dans le format que l on veut
$date_debut_numerique=mktime($jour,$mois,$annee)-(60*60*24*(7+$nbr_moins));
$date_debut_calendrier=strftime("%Y%m%d",$date_debut_numerique);
$date_debutsemaine_numerique=mktime($jour,$mois,$annee)-(60*60*24*($nbjours+$nbr_moins));
$date_debutsemaine=strftime("%Y%m%d",$date_debutsemaine_numerique);
$date_debutsemaine2 = strftime("%d/%m/%Y",$date_debutsemaine_numerique);
$date_finsemaine_numerique=mktime($jour,$mois,$annee)+(60*60*24*(-$nbjours+$nbr_plus));
$date_finsemaine = strftime("%Y%m%d",$date_finsemaine_numerique);
$date_finsemaine2 = strftime("%d/%m/%Y",$date_finsemaine_numerique);
/*$tab = array($date_fin_numerique,$date_debut_numerique,$date_fin_calendrier,$date_debut_calendrier,$date_debutsemaine_numerique,$date_finsemaine_numerique,$date_debutsemaine,$date_finsemaine,$date_debutsemaine2,$date_finsemaine2,$jour,$mois,$annee,$nbr_moins,$nbr_plus);
for($i=0;$i<count($tab);$i++)
{
echo("i : ".$i." valeur : ".$tab[$i]."
");
}*/
return array($date_fin_numerique,$date_debut_numerique,$date_fin_calendrier,$date_debut_calendrier,$date_debutsemaine_numerique,$date_finsemaine_numerique,$date_debutsemaine,$date_finsemaine,$date_debutsemaine2,$date_finsemaine2,$jour,$mois,$annee,$nbr_moins,$nbr_plus);

Quelqu'un peut il m'expliquer pourquoi j'ai ce decalage ?
Merci d'Avance
Maiku

2 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
4 avril 2006 à 16:05
Hello,

faudrait déjà que tu réexplique ce que fait ta fonction parce que j'ai beau la tester (après avoir corrigé quelques warning), je ne pige pas :-)
0
Maiku Messages postés 190 Date d'inscription dimanche 10 avril 2005 Statut Membre Dernière intervention 4 juillet 2007
4 avril 2006 à 20:07
Salut

Alors cette fonction s'occupe de plusieurs calculs, mais principalement elle me permet de calculer deux dates en fonction d'un nombre de jours que je lui donne c'est à dire
si je lui donne en parametre 7 il est censé me renvoyé la date du mardi de la semaine derniere et celle du dimanche.


Sinon a chaque appel elle renvoie aussi les deux dates extremes, c'est à dire la date du lundi d'il y a 7 jours, date jusqu'à laquelle on peut regarder les rendez vous, et la date de fin de l'agenda, c'est à dire 4 semaines apres


la semaine courante.

Ensuite tout ce qui est date_numerique etc c'est des infos que je recupere plus pour l'affichage, et le nbjours moins ou plus sont le nombre de jours a remonté ou a additionné pour arrivé au mardi ou au dimanche.
Je m'explique, imaginons que je suis jeudi, jour actuel donc, pour m'affiche n'importe laquelle de mes semaines, commencer au mardi et arriver au dimanche, il va donc calculer 7 jours par rapport au jeudi, donc j'arriverai au jeudi de la semaine d'avant, nbjours plus permettra
represente le nb de jours a ajouter pour arriver au dimanche donc et nbjours moins pour remontrer au mardi.

Voila j'espere que je t'ai aidé à mieux comprendre ma fonction et que tu pourras m'aider ^^
Merci d'Avance
Maiku
0
Rejoignez-nous