Bonjour à tous,
Comment peut on obtenir le premier jour de la semaine 'w' de l'année 'y' :
en d'autre terme par exemple qu'elle est le premier jour de la semaine 3 en 2007.
La réponse étant lundi 15 janvier 2007
Merci beaucoup
Bonjour à tous,
Comment peut on obtenir le premier jour de la semaine 'w' de l'année 'y' :
en d'autre terme par exemple qu'elle est le premier jour de la semaine 3 en 2007.
La réponse étant lundi 15 janvier 2007
Merci beaucoup
Bonjour,
- Tu détermines la date du lundi de la semaine N° 1 ;
- A cette date, tu appliques un décallage de x semaines (semaine recherchée - 1)
Comme ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <?php $_week = 3; $_year = 2007; $days = (($_week - 1) * 7) + 1; echo '<p>Jour : '.$days.'</p>'; $test = true; $month = 1; while ($month < 13 && $test == true) { $dayInMonth = date('t', mktime(0, 0, 0, $month, 1, $_year)); if ($days - $dayInMonth >= 0) { echo 'oki'; $days -= $dayInMonth; $month++; } else { $test = false; } } echo '<p>Mois : '.$month.'</p>'; $days = $days - date('N', mktime(0, 0, 0, 1, 1, $_year)) + 1; echo '<p>'.date('l\, j F Y', mktime(0, 0, 0, $month, $days, $_year)).'</p>'; ?>
Contrairement au précédent, le code ci-dessous fonctionne correctement :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <?php function dateLundi($annee, $numSemaine) { //-- retourne la date du lundi de la semaine N° xx ------------------------------ //-- détermination de la date du lundi de la semaine N° 1 ----------------------- //-- $TSPremierLundi = timestamp du 1er lundi de janvier ------------------------ $TSPremierLundi = strtotime('first monday', mktime(0, 0, 0, 1, 1, $annee)); //-- $semainePremierLundi = N° de semaine du 1er lundi de janvier --------------- $semainePremierLundi = date('W', $TSPremierLundi); //-- si la semaine du 1er lundi est la semaine N° 1, c'est bon ------------------ //-- sinon, c'est le lundi précédent -------------------------------------------- $TSLundi = ($semainePremierLundi == 1) ? $TSPremierLundi : strtotime('last monday', $TSPremierLundi); return date('d-m-Y', strtotime('+' . ($numSemaine - 1) . ' week', $TSLundi)); } //--------------------------------------------- //--------------------------------------------- $annee = 2003; $numSemaine = 34; echo 'la semaine N° ' . $numSemaine . ' de l\'année ' . $annee . ' commence le lundi ' . dateLundi($annee, $numSemaine) . '<br>'; ?>
Prouve moi que mon code fonctionne pas![]()
Tu n'as qu'à l'essayer. Tu le verras bien tout seul.
Demandes, par exemple, la date du lundi de la semaine N° 34 de l'année 2003.
Partager