Si je comprends les dates, vous pouvez supposer que vous aurez un lundi qui passe tous les 7 jours.

Et vous pouvez aussi safley suppose que vous n'aurez un lundi chaque 7 jours.
De toute façon ici est un code qui vous imprime si son lundi pour la première fois ce mois :
if ( date("D") === "Mon" && (date("j")) < 8 )
{
echo "Today is the the first Monday this month!";
}
- if ( date("D") === "Mon" && (date("j")) < 8 )
- {
- echo "Today is the the first Monday this month!";
- }
Le code ci-dessus va vérifier uniquement de jour todays et si elle ses le premier lundi du mois puis il va déclencher et dire qu'aujourd'hui... bla bla bla. Vous ne demandait pas pour cela.
De toute façon, Voici quelques code que j'ai écrit en hâte :
$day = 1;
$month = 1;
$yearNow = 2011; //start counting from this year
$countToYear = 2020; // stop when reaching this year
while ($yearNow < $countToYear)
{
if ( $month == 6 ) //skip June (for some reason?)
{
$month++;
continue;
}
if ( date("l", mktime(0, 0, 0, $month, $day, $yearNow)) == "Monday" ) // prints out IF monday
{
echo date("Y-m-d", mktime(0, 0, 0, $month, $day, $yearNow));
echo "<br />";
}
$day++;
if ($day > 7) /* there are more than 7 days in a month but the first monday will happen in the first 7 days, so start over. with new month please */
{
$day = 1;
$month++;
if($month > 12)
{
$month = 1;
$yearNow++;
}
}
}
- $day = 1;
- $month = 1;
- $yearNow = 2011; //start counting from this year
- $countToYear = 2020; // stop when reaching this year
- while ($yearNow < $countToYear)
- {
- if ( $month == 6 ) //skip June (for some reason?)
- {
- $month++;
- continue;
- }
- if ( date("l", mktime(0, 0, 0, $month, $day, $yearNow)) == "Monday" ) // prints out IF monday
- {
- echo date("Y-m-d", mktime(0, 0, 0, $month, $day, $yearNow));
- echo "<br />";
- }
- $day++;
- if ($day > 7) /* there are more than 7 days in a month but the first monday will happen in the first 7 days, so start over. with new month please */
- {
- $day = 1;
- $month++;
- if($month > 12)
- {
- $month = 1;
- $yearNow++;
- }
- }
- }
Ses pas assez, mais il devrait vous donner une liste qui ressemble à :
2011-01-03
2011-02-07
2011-03-07
2011-04-04
2011-05-02
2011-07-04
2011-08-01
2011-09-05
2011-10-03
2011-11-07
2011-12-05
2012-01-02
2012-02-06
2012-03-05
2012-04-02
2012-05-07
2012-07-02
2012-08-06
2012-09-03
2012-10-01
2012-11-05
2012-12-03
2013-01-07
2013-02-04
2013-03-04
2013-04-01
2013-05-06.
etc.
Il s'agit de la première fois un lundi qui se passe dans chaque mois. Comme vous pouvez le voir 20XX-06-XX est ignorée, car vous ne voulez pas calculer quand il arrive sur juin. Ceci est fait en utilisant un relevé de continuer :
if ( $month == 6 )
{
$month++;
continue;
}
- if ( $month == 6 )
- {
- $month++;
- continue;
- }
Vous pouvez vérifier les dates plus loin dans le temps ou remonter dans le temps plus en altérant $yearNow et $countToYears à partir de valeurs initiales. Je le jour $ = 1 ; et $mois = 1 ; valeurs comme l'est, ils sont juste dire pour lancer la première « analyse » avec mois 1 et le jour 1.