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.
En effet ^^
Je prenais pas en compte si le 1er jour de l'année ne tombait pas un lundi ^^
Merci pour vos réponse, la fonction semble être exactement ce que je recherche.
Elle fonctionne, je vous remercie pour le temps que vous m'avez consacré
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager