Aller au menu - Aller au contenu
Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !

Trouver une date a partir d'un numéro de semaine ...

en parametre, numéro et jour de semaine,et année

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Résolu Le problème de ce sujet a été résolu

Offre d'emploi : Développeur Web PHP/Drupal (H/F)

Page 1 
Auteur Message
2 visiteurs sur ce sujet (2 anonymes)
Page 1 
Hors ligne deration # Posté le 16/08/2010 à 09:49:19

Voila j'aimerai trouver une date sous format jour / mois / année, en donnant les paramètres suivant :
Le numéro de semaine, le jour de cette semaine et l'année.

J'espère avoir été clair, mille et un merci pour vos réponses.
Publicité # Posté le 16/08/2010 à 09:49:19

Connecté BlueRat # Posté le 16/08/2010 à 10:44:30
Ne pas se fier aux apparences
Avatar
Modérateurs

Ville : Marseille
Pays : France métropolitaine

Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
Salut,

Fonction trouvée sur le net, et modifiée au besoin :
Code : PHP
 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
function trouver_date($semaine, $annee, $jour)
{
    if(strftime("%W",mktime(0,0,0,01,01,$annee))==1)
	$mktime = mktime(0,0,0,01,(01+(($semaine-1)*7)),$annee);
    else
	$mktime = mktime(0,0,0,01,(01+(($semaine)*7)),$annee);

    if(date("w",$mktime) > 1)
	$decalage = ((date("w",$mktime)-1)*60*60*24);
 
    $lundi = $mktime - $decalage;
    $mardi = $lundi + (1*60*60*24);
    $mercredi = $lundi + (2*60*60*24);
    $jeudi = $lundi + (3*60*60*24);
    $vendredi = $lundi + (4*60*60*24);
    $samedi = $lundi + (5*60*60*24);
    $dimanche = $lundi + (6*60*60*24);
    
    $resultat = array(date("d/m/Y",$lundi),
		      date("d/m/Y",$mardi),
		      date("d/m/Y",$mercredi),
		      date("d/m/Y",$jeudi),
		      date("d/m/Y",$vendredi),
		      date("d/m/Y",$samedi),
		      date("d/m/Y",$dimanche));
    
    $jours = array(0, 1, 2, 3, 4, 5, 6);
    if(in_array($jour, $jours))
	return $resultat[$jour];
}
 
echo trouver_date(33, 2010, 0); // renvoie 16/08/2010

Lundi = 0, Mardi = 1, ..., Dimanche = 6.
Édité le 16/08/2010 à 11:15:05 par BlueRat
Hors ligne deration # Posté le 16/08/2010 à 10:51:45

Merci ça a l'air d'être du lourd, je te tient au courant.
Je sent que c'est nickel, merci, j'aurai jamais pu trouver ça tout seul.
Connecté BlueRat # Posté le 16/08/2010 à 11:13:33
Ne pas se fier aux apparences
Avatar
Modérateurs

Ville : Marseille
Pays : France métropolitaine

Cette réponse a aidé l'auteur du sujet Cette réponse a aidé l'auteur du sujet
j'ai trouvé une autre fonction =>
Code : PHP
 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
<?php
function trouver_date($sem, $annee, $j)
{
    $jour_dans_le_mois = array();
    $mois = 1;
    $jour = 0;
    
    for($a=1;$a<=365+date('L');$a++)
    { 
	for($i=1;$i<=12;$i++)
	{ 
	    $jour += date('t', mktime(0, 0, 0, $i, 1, date('Y')));
	    $jour_dans_le_mois[$i] = $jour;           
	} 
		     
	$today = mktime(0, 0, 0, $mois, $a, date('Y'));        
	$semaine = date('W', $today);
	$day = date('N', $today);
	$date = date('d/m/Y', $today);
	if(in_array($a, $jour_dans_le_mois)) $mois++;
		     
	if($semaine == $sem && $day == $j)
	    return $date;
    }
}

echo trouver_date(33, 2010, 1);


Ici, lundi = 1, mardi = 2, ..., dimanche = 7.

J'ignore laquelle est la plus performante (logiquement je dirai la première vu qu'il n'y a pas de boucle).
Édité le 16/08/2010 à 11:15:32 par BlueRat
Hors ligne deration # Posté le 16/08/2010 à 11:28:53

Incroyable !!
J'ai déjà commencer avec la première et ça fonctionne nickel.
Encore merci !
Hors ligne potter3559 # Posté le 08/02/2012 à 17:25:27 Message supprimé pour le motif suivant : Cette réponse a été supprimée par l'utilisateur.
Connecté Zazou # Posté le 08/02/2012 à 17:30:16
Avatar

Ville : Le havre
Pays : France métropolitaine
Études : IUT Havre

Bonjour,

Code : PHP
1
2
3
4
5
6
7
<?php
// Retourne la date du lundi de la semaine $semaine et de l'année $annee
// Dans un format de type DateTime bien sûr
$lundi = new DateTime();
$lundi->setISOdate($annee, $semaine);

echo "La semaine $semaine de l'année $annee commencent le ".$lundi->format('d M Y');



Edit: Ah... c'était un bon déterrage en règle, tant pis je laisse ça peut servir à d'autre. :p
Édité le 08/02/2012 à 17:32:28 par Zazou

Pour des missions ponctuelles et rémunérées, une seule adresse --> http://www.isabellejaffrezic.fr
 

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx