Premier semaine de l'annee

Fermé
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 - 3 juil. 2008 à 15:04
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 - 3 juil. 2008 à 17:07
Bonjour,
j'ai vu manuel de php pour fonctions comme strtotime ou mk time mais y'a probleme que j'ai pas pu résoudre
en fete je cherche comment afficher premier lundi de l'annee
mais bien sur par exemple annee 2008 la premiere semaine comence par (31-12-2007-)
vu que c'est lundi
j'ai trouvé ce script mais il résoud pas mon probelme

function week_dates($week,$year) {
$week_dates = array();
// Get timestamp of first week of the year
$first_day = mktime(12,0,0,1,1,$year);
$first_week = date("W",$first_day);
if ($first_week > 1) {
$first_day = strtotime("+1 week",$first_day); // skip to next if year does not begin with week 1
}
// Get timestamp of the week
$timestamp = strtotime("+$week week",$first_day);

// Adjust to Monday of that week
$what_day = date("w",$timestamp); // I wanted to do "N" but only version 4.3.9 is installed :-(
if ($what_day==0) {
// actually Sunday, last day of the week. FIX;
$timestamp = strtotime("-6 days",$timestamp);
} elseif ($what_day > 1) {
$what_day--;
$timestamp = strtotime("-$what_day days",$timestamp);
}
$week_dates[1] = date("Y-m-d",$timestamp); // Monday
$week_dates[2] = date("Y-m-d",strtotime("+1 day",$timestamp)); // Tuesday
$week_dates[3] = date("Y-m-d",strtotime("+2 day",$timestamp)); // Wednesday
$week_dates[4] = date("Y-m-d",strtotime("+3 day",$timestamp)); // Thursday
$week_dates[5] = date("Y-m-d",strtotime("+4 day",$timestamp)); // Friday
$week_dates[6] = date("Y-m-d",strtotime("+5 day",$timestamp)); // Saturday
$week_dates[7] = date("Y-m-d",strtotime("+6 day",$timestamp)); // Sunday
return($week_dates);
}
merçi d'avance
A voir également:

2 réponses

macgawel Messages postés 664 Date d'inscription mercredi 7 mai 2008 Statut Membre Dernière intervention 1 novembre 2008 89
3 juil. 2008 à 16:03
Bonjour.

Si je comprends bien, tu veux juste afficher le premier lundi de l'année ?

Dans ce cas (exemple de code, certainement optimisable...) :
function premierLundi($an) {
/*
Définition des "constantes" :
$jour => Nombre de secondes dans une journée (le TimeStamp est un nombre de secondes)
$semaine => Tableau associatif qui fait correspondre au jour de la semaine le nombre de jour à rajouter pour arriver au lundi
(C'est pour ça qu'il est "à l'envers"
*/
	$jour=60*60*24;
	$semaine = array ('Mon'=>0,'Sun'=>1,'Sat'=>2,'Fri'=>3,'Thu'=>4,'Wed'=>5,'Tue'=>6); 
// On récupère le TimeStamp correspondant au premier janvier de l'année
	$ts = mktime(0,0,0,1,1,$an);
// $premier = Le jour de la semaine correspondant au premier janvier.
	$premier = date("D", $ts);
/* $premier_lundi = Le premier lundi de l'année.
Méthode de calcul :
On a le TS du premier janvier.
On va chercher dans le tableau $semaine le nombre de jours à rajouter pour arriver à lundi
pour 2008, le 01/01/2008 est un mardi (Tue), on devra donc rajouter 6 jours = $semaine['Tue']

Pour rajouter le nombr ede jours nécessaires, on rajoute au TimeStamp du premier janvier le nombre de jours donné par $semaine multiplié par le nombre de secondes dans un jour ($jour).
*/
	$prem_lundi = $semaine[$premier]*$jour+$ts;
// On retourne le TimeStamp correspondant au premier lundi de l'année.
	return $prem_lundi;
}
0
tigre198 Messages postés 54 Date d'inscription dimanche 27 avril 2008 Statut Membre Dernière intervention 13 août 2012 9
3 juil. 2008 à 17:07
merçi pour ta réponse
mais la je croix pas ça va marcher . et la je croix c'est ma faute car j'ai mal expliqué
si tu vérifie calendrier dans les entreprises la premire semaine de 2008 commence en 31-01-2007 et pas 01-01-2008

et la j'ai besoin d'voir le lundi de 31-12-2007 pour que je c onsidere comme premier lundi de 2008
et bien sur chaque annee a ses carcteristiques
par exemple annee 2009 si tu voix calendrier semaine 1 comence lundi 29-01-2008

j'espere que t'a compris probleme
sinon je vais esayer de voir ta fonction pour voir si je peux adapter sinon elle marche et y'a pas erreur
merçi comme meme
0