Supprimer un jour de la semaine dans une liste de dates

Cactus
Invité n'ayant pas de compte PHPfrance

30 août 2009, 12:05

Bonjour,

Je voudrais afficher une liste de jours entre deux dates. Par exemple, "évènement du 30/08/2009", "évènement du 31/08/2009"...

J'ai trouvé le code qui fonctionne :
<?php
$day_start = '30';
$month_start = '08';
$year_start = '2009';
$day_end = '11';
$month_end = '09';
$year_end = '2009';
$days_proc_time = round((strtotime("$year_end-$month_end-$day_end") - strtotime("$year_start-$month_start-$day_start")) / (60 * 60 * 24) + 1);
echo $days_proc_time;
for ($i = 1; $i <= $days_proc_time; $i++)
{
    echo ' évènement du '. date("d/m/Y", mktime(0, 0, 0, $month_start, $day_start, $year_start)).',';
$day_start++;
}
$i++;
?>
Maintenant, je ovudrai que cette liste d'évènements puisse exclure certains jours. Imaginons qu'un évènement commence le 01/09/2009 et se termine le 31/12/2009, mais n'est jamais lieu le lundi : comment l'exclure de ma liste ?

J'ai testé...
<?php
$day_start = '30';
$month_start = '08';
$year_start = '2009';
$day_end = '31';
$month_end = '12';
$year_end = '2009';
$days_proc_time = round((strtotime("$year_end-$month_end-$day_end") - strtotime("$year_start-$month_start-$day_start")) / (60 * 60 * 24) + 1);
echo $days_proc_time;
for ($i = 1; $i <= $days_proc_time; $i++)
{
	if (date("l", mktime(0, 0, 0, $month_start, $day_start, $year_start)) == 'Monday') 
	{
		echo '';
	}
    else if
	{
	echo ' évènement du '. date("d/m/Y", mktime(0, 0, 0, $month_start, $day_start, $year_start)).',';
	}
$day_start++;
}
$i++;
?>
et d'autres combinaisons, sans résulat probant.

Merci pour votre aide, si vous avez quelques pistes.

Bien à vous,

Cactus

Eléphant du PHP | 369 Messages

30 août 2009, 13:20

Bonjour,
Je voudrais afficher une liste de jours entre deux dates. Par exemple, "évènement du 30/08/2009", "évènement du 31/08/2009"...
J'ai trouvé le code qui fonctionne :
[...]
Maintenant, je ovudrai que cette liste d'évènements puisse exclure certains jours. Imaginons qu'un évènement commence le 01/09/2009 et se termine le 31/12/2009, mais n'est jamais lieu le lundi : comment l'exclure de ma liste ?
J'ai testé...
[...]
et d'autres combinaisons, sans résulat probant.
Merci pour votre aide, si vous avez quelques pistes.
Bien à vous,
Cactus
Une piste, à toi d'adapter
    // Juste un exemple qui ne rime à rien
    // mais peut être la solution à ton problème.
    //
    $str = "Sat April 2008 12:52";

    // Timestamp
    //
    $date = strtotime($str);

    // nouvelle représentation de la date
    //
    $newDate = date("D j F y", $date);
    echo $newDate;
D'un côté tu récupères la date suivant une chaine donnée et par
la suite tu réécris la date avec les éléments que tu souhaites.
Tu peux tester le Time d'unix ou directement chaque éléments que tu recois.

@+

EDIT:

Autre exemple mais tu n'as pas demandé (c'est pour être plus clair lol)
Si on veut le jour de la semaine d'une date X, par exemple on fait :
    $str = "30 Aug 2009";
    $time = strtotime($str);
    $newDate = date("D", $time);
    echo $newDate;
C'était juste pour dire qu'on peut à peu près tout faire, le rendu dépant des
tests placés avant ou après ... ;)

@+ ;)

Cactus
Invité n'ayant pas de compte PHPfrance

30 août 2009, 23:19

Fuzzy,

Merci pour tes suggestions. J'essaierai de tester prochainement.

Cordialement,

Cactus