php date - trouver le premier lundi du mois

  • jokerper
  • Novice
  • Novice
  • Avatar de l’utilisateur
  • Inscription: Juin 20, 2011
  • Messages: 19
  • Status: Offline

Message Janvier 14th, 2012, 5:54 pm

Salut


Comment puis-je trouver cela

php date - trouver le premier lundi du mois.

comme aujourd'hui, 14.1.2012, que j'ai gagné pour trouver le premier lundi de février maintenant et après ce lundi je veux trouver la prochaine en mars et ainsi de suite sauf de juin.

toute aide, veuillez ?
  • Anonymous
  • Bot
  • No Avatar
  • Inscription: 25 Feb 2008
  • Messages: ?
  • Loc: Ozzuland
  • Status: Online

Message Janvier 14th, 2012, 5:54 pm

  • WritingBadCode
  • Graduate
  • Graduate
  • Avatar de l’utilisateur
  • Inscription: Avr 28, 2011
  • Messages: 214
  • Loc: Sweden
  • Status: Offline

Message Janvier 19th, 2012, 10:01 am

Si je comprends les dates, vous pouvez supposer que vous aurez un lundi qui passe tous les 7 jours. :D 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 :

Code: [ Select ]
if ( date("D") === "Mon" && (date("j")) < 8 )
{
    echo "Today is the the first Monday this month!";
}
  1. if ( date("D") === "Mon" && (date("j")) < 8 )
  2. {
  3.     echo "Today is the the first Monday this month!";
  4. }


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 :

Code: [ Select ]

$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++;
        }
    }
}
  1. $day = 1;
  2. $month = 1;
  3. $yearNow = 2011; //start counting from this year
  4. $countToYear = 2020; // stop when reaching this year
  5. while ($yearNow < $countToYear)
  6. {
  7.     if ( $month == 6 ) //skip June (for some reason?)
  8.     {
  9.         $month++;
  10.         continue;
  11.     }
  12.     if ( date("l", mktime(0, 0, 0, $month, $day, $yearNow)) == "Monday" ) // prints out IF monday
  13.     {
  14.         echo date("Y-m-d", mktime(0, 0, 0, $month, $day, $yearNow));
  15.         echo "<br />";
  16.     }
  17.     $day++;
  18.     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 */
  19.     {
  20.         $day = 1;
  21.         $month++;
  22.         if($month > 12)
  23.         {
  24.             $month = 1;
  25.             $yearNow++;
  26.         }
  27.     }
  28. }


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 :

Code: [ Select ]
  if ( $month == 6 )
  {
    $month++;
    continue;
  }
  1.   if ( $month == 6 )
  2.   {
  3.     $month++;
  4.     continue;
  5.   }


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.
  • jokerper
  • Novice
  • Novice
  • Avatar de l’utilisateur
  • Inscription: Juin 20, 2011
  • Messages: 19
  • Status: Offline

Message Janvier 20th, 2012, 9:07 am

Salut

Première Merci pour votre réponse.

Je peux voir il beaucoup de travail.

Pouvez-vous me dire où changer si j'ai gagné le 2. ou 3.
4 ou 5.

parce que je mettra à jour certains événements dans l'avenir.

Si je peux l'utiliser pour mettre dans un certain temps et insérer dans une db.

tous les scheudle(wrong) dans une db.

Merci à l'avance.

/jokerper

Afficher de l'information

  • Total des messages de ce sujet: 3 messages
  • Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 143 invités
  • Vous ne pouvez pas poster de nouveaux sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas éditer vos messages
  • Vous ne pouvez pas supprimer vos messages
  • Vous ne pouvez pas joindre des fichiers
 
 

© 2011 Unmelted, LLC. Ozzu® est une marque déposée de Unmelted, LLC