8795 sujets

Développement web côté serveur, CMS

Bonjour à tous,

J'ai fait une petite fonction et je voudrais savoir si j'ai bien tout géré.

Cette fonction prend en paramètre un numéro de semaine et une année et retourne la date du début et de fin de semaine.

Voici la "bête"


function get_date_semaine($y,$w){
		$x=1;
		$tableau_mois = array("","Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre");
		for($semaine=1;$semaine<=52;$semaine++){
			for($mois=1;$mois<=12;$mois++){
				for($jour=1;$jour<=date("t",mktime(0,0,0,$mois,1,$y));$jour++){
					if(date("W",mktime (0,0,0,$mois,$jour,$y)) == $w){
						if($w == 52 && $jour == 1){	//Cas particulier
							continue;
						}
						$jour = str_pad($jour,2,0,STR_PAD_LEFT);
						$mois = str_pad($mois,2,0,STR_PAD_LEFT);
						if($x == 1){
							$date_debut_fr = $jour."-".$mois."-".$y;
							$date_debut_us = $y."-".$mois."-".$jour;
							$date_debut_texte = $jour." ".$tableau_mois[$mois*1]." ".$y;
						}else if(date("N",mktime(0,0,0,$mois,$jour,$y)) == 7){
							$date_fin_fr = $jour."-".$mois."-".$y;
							$date_fin_us = $y."-".$mois."-".$jour;
							$date_fin_texte = $jour." ".$tableau_mois[$mois*1]." ".$y;
							return array($date_debut_us,$date_fin_us,$date_debut_fr,$date_fin_fr,$date_debut_texte,$date_fin_texte);
						}
						$x++;
					}
				}
			}
		}
	}


Optimisation ? Erreur(s) ? Amélioration ?

A vos claviers Smiley smile
Modifié par ffwrude (14 Mar 2013 - 16:36)
Je fais l'impasse sur la partie traduction du mois (qui a mon avis n'as rien à faire dans ta fonction) :


function get_date_semaine($y, $w)
{
  $r = array();
  $date = date_create();

  date_isodate_set($date, $y, $w);
  $r[] = date_format($date, 'd/m/Y');

  date_isodate_set($date, $y, $w, 7);
  $r[] = date_format($date, 'd/m/Y');
  
  return $r;
}

Modifié par jb_gfx (14 Mar 2013 - 16:27)
Oh mon dieu... Je me suis trop pris la tête pour rien Smiley smile

Effectivement c'est BEAUCOUP plus simple comme ca ...

Le mois dans la fonction était une question pratique.
Pour retourner la date en texte (pour affichage) et la date US pour mettre dans une requete SQL.

Merci en tout cas c'est beaucoup mieux comme ca
Modifié par ffwrude (14 Mar 2013 - 16:31)