Fonction php date

cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004 - 16 juil. 2004 à 11:59
cs_casal Messages postés 1 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 19 mai 2005 - 19 mai 2005 à 11:02
Hello,

est-ce qu'une fonction permet, à partir d'un numéro de semaine, de retrouver les dates correspondantes?

je sais que l'on peut faire l'inverse, donc retrouver le numéro de semaine à partir d'une date, qqch comme date (W) je crois.

Merci d'avance.

8 réponses

coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
16 juil. 2004 à 12:20
Salut!
J'ai regardé et n'ai pas trouvé de fonction qui le fait, mais, tu peux calculer ce que ca fait en jour et donc trouver le mois dans lequel ca tombre... (tenir compte du 29.02...)

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"

www.progforum.net: Aide en programmation!
0
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
16 juil. 2004 à 18:05
moi jle passerait en seconde, apres tu peux faire
date("ske_tu_veux",$seconde);

PHP Guru
Écoutez les conseils d'un vieux sage ! Ils sont souvent très utiles.
http://www.lookstrike.com
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
17 juil. 2004 à 10:28
Salut!
J'ai commencé à voir pour ta fonction.
J'ai pas trop le tps aujourd hui et demain, mais si tu patiente --> lundi tu devrais l'avoir.

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"

www.progforum.net: Aide en programmation!
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
17 juil. 2004 à 11:56
Hello.

Merci pour vos réponses. Je prends note de tout ceci.

Si non, coockiesch, je peux attendre jusque à lundi.

@++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
17 juil. 2004 à 12:33
Salut!
Finalement, je t'ai fais une petite fonction....

Elle est pas tout à fait juste:
- J'ai un bug en 2000: décalage d'une semaine, pas trouvé pk

Voici comment ca fonctionne:
1) On teste la validité de semaine
2) Tableau des jours
3) Année bissextile?
4) Premier jours de l'an (si lundi: 0, mardi: 1, mercredi: 2, ... dimanche: 7)
5) n° du jour du lundi du début de la semaine $semaine (!!!)
6) On regarde quel mois ca tombre
7) On prépare les retours

Paramètres:
$from: début de la semaine
$to: fin de la semaine
--> jj/mm/aaaa

Ces 2 variables sont passées par référence

Exemple d'appel:
$from = '';
$to = '';

semaine(25, 2002, $from, $to);
echo '
from: ' . $from;
echo '
to: ' . $to;


Le code, enfin:
function semaine($semaine, $an, &$from, &$to)
{
if($semaine > 55 || $semaine < 1)
return;

// tableau de jours
$jours = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
if(($an % 4 == 0 && $an % 100 != 0) || $an % 400 == 0)
$jours[1] = 29;

// premier jour de l'an $an
$first = date('D', mktime(0, 0, 0, 1, 1, $an));
switch($first)
{
case 'Mon':
$first = 0;
break;

case 'Tue':
$first = 1;
break;

case 'Wed':
$first = 2;
break;

case 'Thu':
$first = 3;
break;

case 'Fri':
$first = 4;
break;

case 'Sat':
$first = 5;
break;

case 'Sun':
$first = 6;
break;
}

if($semaine == 1)
{
$from = '01/01/' . $an;
$to = '0' . (7 - $first) . '/01/' . $an;
return;
}

// n° du jour (pour le lundi de le semaine $semaine)
$nb_jours = (($semaine - 1) * 7) + 1 - $first;

// mois
$i = 0;
while($nb_jours > $jours[$i])
$nb_jours -= $jours[$i++];

// sortie
$from = ($nb_jours < 10 ? '0' . $nb_jours : $nb_jours) . '/' . ( ($i + 1) < 10 ? '0' . ($i + 1) : ($i + 1) ) . '/' . $an;

if(($nb_jours + 6) > 31)
$to = '31/12/' . $an;
else
$to = ( ($nb_jours + 6) < 10 ? '0' . ($nb_jours + 6) : ($nb_jours + 6) ) . '/' . ( ($i + 1) < 10 ? '0' . ($i + 1) : ($i + 1) ) . '/' . $an;
}


Juste pour info: C'est du bénévolat, je garantit absolument pas son fonctionnement... J'ai fais quelques tests et ca marche mais pour la suite, je n'ai pas de comptes à rendre...

Si tu as des questions, hésites pas.

@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"

www.progforum.net: Aide en programmation!
0
coockiesch Messages postés 2268 Date d'inscription mercredi 27 novembre 2002 Statut Membre Dernière intervention 13 septembre 2013 4
17 juil. 2004 à 13:11
Une petite modif:
Remplace
 if($semaine == 1)
{
$from = '01/01/' . $an;
$to = '0' . (7 - $first) . '/01/' . $an;
return;
}

Par
if($semaine == 1)
{
if($first != 1)
$from = (32 - $first) . '/12/' . ($an - 1);
else
$from = '01/01/' . $an;

$to = '0' . (7 - $first) . '/01/' . $an;
return;
}


@++

R@f

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"

www.progforum.net: Aide en programmation!
0
cs_Niníel Messages postés 20 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 juillet 2004
19 juil. 2004 à 07:16
Hello!

Merci beuacoup pour ton code coockiesch. Avec ça, je voie déjà mieux comment faire ma fonction.

@++

Niníel
0
cs_casal Messages postés 1 Date d'inscription mercredi 3 novembre 2004 Statut Membre Dernière intervention 19 mai 2005
19 mai 2005 à 11:02
Salut je viens de tomber sur ton code qui m'aide bien par contre il y a quelques erreurs :



1- Cas de la semaine 1:

remplace

if($semaine == 1)
{
if($first != 1)
$from = (32 - $first) . '/12/' . ($an - 1);
else
$from = '01/01/' . $an;


$to = '0' . (7 - $first) . '/01/' . $an;
return;
}



Par

if($semaine == 1)

{

if($first !=
0) {

$from = $an.'-01-0'.(8 - $first);

$to = $an.'-01-0'.(14 - $first);

} else {

$from = $an.'-01-01';

$to = $an.'-01-07';

}

return;

}



2- Cas du n° du jour:

remplace

// n° du jour (pour le lundi de le semaine $semaine)

$nb_jours = (($semaine - 1) * 7) + 1 - $first;

par

// n° du jour (pour le lundi de le semaine $semaine)

$nb_jours = ($semaine * 7) + 1 - $first;



3- Cas du changement de mois pour le $to

remplace

if(($nb_jours + 6) > 31)


$to = '31/12/' . $an;


else


$to = ( ($nb_jours + 6) < 10 ? '0' . ($nb_jours + 6) : ($nb_jours +
6) ) . '/' . ( ($i + 1) < 10 ? '0' . ($i + 1) : ($i + 1) ) . '/' .
$an;



par

if(($nb_jours + 6) > $jours[$i]) {


if ($i == 11) {


$to = '0' . ($nb_jours + 6 - 31) . '/01/' . ($an + 1);


} else {


$to = '0' . ($nb_jours + 6 - $jours[$i]) . '/' . ( ($i + 2) < 10 ? '0' . ($i + 2) : ($i + 2) ) . '/' . $an;


}


} else

$to = ( ($nb_jours + 6) < 10 ? '0' . ($nb_jours + 6) : ($nb_jours +
6) ) . '/' . ( ($i + 1) < 10 ? '0' . ($i + 1) : ($i + 1) ) . '/' .
$an;



A+ Casal
0
Rejoignez-nous