Bonjour à tous

Je suis en train de faire un agenda partagé et je suis face à un petit soucis.

Je dispose d'une date et je souhaiterais avoir le numéro des jours de la semaine en cours.

En gros, aujourd'hui, nous sommes le 18 juillet, je souhaiterais récupérer quelques choses comme:
Lundi 12 juillet, Mardi 13 juillet ...... Dimanche 18 juillet.

Autre exemple avec la date du 28 juillet, je devrais donc récupérer:
Lundi 26 juillet, mardi 27 juillet ... Dimanche 1 aout

Je ne vois pas comment mis prendre, quelqu'un pourrait m'aider svp.
Merci d'avance.

4 réponses


leknoppix
Auteur
Réponse acceptée

Voici la réponse:

<?php
setlocale(LC_TIME, 'fr_FR', 'french', 'fre', 'fra');
$auj = '2010-07-28';
$t_auj = strtotime($auj);
$p_auj = date('N', $t_auj);
if($p_auj == 1){
  $deb = $t_auj;
  $fin = strtotime($auj.' + 6 day');
}
else if($p_auj == 7){
  $deb = strtotime($auj.' - 6 day');
  $fin = $t_auj;
}
else{
  $deb = strtotime($auj.' - '.(6-(7-$p_auj)).' day');
  $fin = strtotime($auj.' + '.(7-$p_auj).' day');
}
while($deb <= $fin){
  echo strftime('%A %d %B %Y', $deb).'<br />';
  $deb += 86400;
}
?>

J'ai une fonction qui le fait, je te la file, adapte la à tes besoins ;)

<?php
function formaterDate($timestamp){
    $jour = array('Dim.','Lun.','Mar.','Mer.','Jeu.','Ven.','Sam.');
    $mois = array('Jan','Fév','Mar','Avr','Mai','Juin','Juil','Aoû','Sep','Oct','Nov','Déc');

    $date = date('G', $timestamp)."h ".date('i', $timestamp)."min ".$jour[date('w', $timestamp)]." "
      .date('d', $timestamp)." ".$mois[date('m', $timestamp)-1]." ".date('Y', $timestamp);

    return $date;
}
?>

Merci DevAddict, mais tu n'as pas tout à fait compris ce que je voulais. J'ai commencé à coder ceci mais c'est loin d'être optimiser:

<?php 
$day=date(N,mktime(1,1,1,$_GET'mois'],$_GET'jour'],$_GET'annee']));
if($day==1)
{
    $mois=monthNumToName(date(m,mktime(1,1,1,$_GET'mois'],$_GET'jour'],$_GET'annee'])));
    $tableaudate=array(
        0 => "Lundi ".$_GET'jour']." ".$mois,
        1 => "Mardi ".($_GET'jour']+1)." ".$mois,
        2 => "Mercredi ".($_GET'jour']+2)." ".$mois,
        3 => "Jeudi ".($_GET'jour']+3)." ".$mois,
        4 => "Vendredi ".($_GET'jour']+4)." ".$mois,
        5 => "Samedi ".($_GET'jour']+5)." ".$mois,
        6 => "Dimanche ".($_GET'jour']+6)." ".$mois
    );
}
elseif($day==7)
{
    $mois=monthNumToName(date(m,mktime(1,1,1,$_GET'mois'],$_GET'jour'],$_GET'annee'])));
    $tableaudate=array(
        0 => "Lundi ".($_GET'jour']-6)." ".$mois,
        1 => "Mardi ".($_GET'jour']-5)." ".$mois,
        2 => "Mercredi ".($_GET'jour']-4)." ".$mois,
        3 => "Jeudi ".($_GET'jour']-3)." ".$mois,
        4 => "Vendredi ".($_GET'jour']-2)." ".$mois,
        5 => "Samedi ".($_GET'jour']-1)." ".$mois,
        6 => "Dimanche ".($_GET'jour'])." ".$mois
    );
}
else
{
    $mois=monthNumToName(date(m,mktime(1,1,1,$_GET'mois'],$_GET'jour'],$_GET'annee'])));
    $nouvelledate=$day;
    $nouvelledate=$_GET'jour']-$nouvelledate+1;
    $tableaudate=array(
        0 => "Lundi ".$nouvelledate." ".$mois,
        1 => "Mardi ".($nouvelledate+1)." ".$mois,
        2 => "Mercredi ".($nouvelledate+2)." ".$mois,
        3 => "Jeudi ".($nouvelledate+3)." ".$mois,
        4 => "Vendredi ".($nouvelledate+4)." ".$mois,
        5 => "Samedi ".($nouvelledate+5)." ".$mois,
        6 => "Dimanche ".($nouvelledate+6)." ".$mois
    );
}
?>

Ton objectif c'est pas de retourner la date d'aujourd'hui comme ceci ?

Dimanche 18 Juillet 2010