Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 29/05/2010, à 01:12

david96

[Script] Calcul de la fête des mères

Bonsoir,

Je m'y prend un peu tard, mais j'avais dans l'optique de faire un script pour calculer la date de la fête des mères en PHP, mais d'autres langages peuvent si prêter, la logique restant la même.

Donc je suis allé sur Wikipédia pour savoir à quelle date elle avait lieu :

Dernier dimanche de mai. Si ce jour coïncide avec la Pentecôte, la fête est repoussée au premier dimanche de juin.

http://fr.wikipedia.org/wiki/F%C3%AAte_ … 8res#Dates

Ok, super... Le calcul de la Pentecôte, toujours selon Wikipédia :

La Pentecôte est célébrée le septième dimanche après Pâques

la date de Pâques j'avais déjà fait un script :
http://www.concepteursite.com/paques.php

Donc, la logique textuelle serait :
Si le 7ème dimanche (ou 49 jours) après Pâques la date est égale au dernier dimanche de mai, alors la fête des mères est le 1er dimanche de juin.

Si ce n'est pas le cas, la fête des mères sera le dernier dimanche de mai.

Je n'ai pas encore testé et je suis fatigué, mais comme ça, je pense que ça peut le faire.

Je testerai demain, en attendant, j'espère que des plus éclairés auront mis leur astuce smile

Dernière modification par david96 (Le 29/05/2010, à 01:21)

Hors ligne

#2 Le 08/06/2010, à 15:45

Yeesha

Re : [Script] Calcul de la fête des mères

Anecdotique mais très sympa de penser aux mamans !

Une maman.

Hors ligne

#3 Le 08/06/2010, à 15:51

david96

Re : [Script] Calcul de la fête des mères

Hi hi ! smile

Pour le calcul de la fête des pères, c'est bien plus simple, c'est le troisième dimanche de juin et basta...

Un papa. cool

Hors ligne

#4 Le 09/06/2010, à 07:58

Brunod

Re : [Script] Calcul de la fête des mères

C'est très local comme calcul : chez nous (Belgique), c'est 2e dimanche de mai pour les mères et 2e dimanche de juin pour les pères. Vive l'Europe hmm


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#5 Le 09/06/2010, à 08:23

Airballman

Re : [Script] Calcul de la fête des mères

Salut,

faire un script pour calculer la date de la fête des mères

Toi tu t'es déjà fait avoir non big_smile ?

J'ai déjà fait un calendirer qui devait trouver tous les jours fériés d'une année il y a un moment. Le constat est simple : à part les dates spéciales comme noël et nouvel an, ils sont tous calculés à partir de la date de Pâques.

Donc en gros si tu as Pâques tu as gagné smile.
J'espère que ça t'aide :s

Hors ligne

#6 Le 09/06/2010, à 11:48

david96

Re : [Script] Calcul de la fête des mères

J'ai le calcul de Pâques : http://www.concepteursite.com/paques.php wink

Hors ligne

#7 Le 09/06/2010, à 11:58

Barthy

Re : [Script] Calcul de la fête des mères

Pour ton calcul de paques, il est dit qu'il fonctionne a partir de 1583, mais j'ai l'impression que pour toutes les années < 1970, il retournera la meme date : " 01/01/1970" ...:/


sudo ku

Hors ligne

#8 Le 09/06/2010, à 12:10

saroumane_

Re : [Script] Calcul de la fête des mères

non c'est pour les années <1902 que le script retourne 01/01/1970


--
Xubuntu 20.04

Hors ligne

#9 Le 09/06/2010, à 12:13

Barthy

Re : [Script] Calcul de la fête des mères

Bien vu, j'avais pas assez poussé mes tests wink


sudo ku

Hors ligne

#10 Le 09/06/2010, à 12:55

david96

Re : [Script] Calcul de la fête des mères

Houllà, merci, j'irai voir ça...

Hors ligne

#11 Le 15/06/2010, à 00:13

david96

Re : [Script] Calcul de la fête des mères

Je suis allé voir ce qui n'allait pas dans le script.

Bâ tout est nickel en local !

C'est donc du côté serveur mutualisé (1and1) que ça couille…

Étrangeté hmm

Hors ligne

#12 Le 04/06/2012, à 22:07

lingtalfi

Re : [Script] Calcul de la fête des mères

Et moi qui pensait faire la fonction en deux deux ( mon but étant d'envoyer un email automatiquement à ma mère à chaque fête des mères ), qui aurait cru que c'était si complexe ?

Bref, voici le résultat de quelques heures de recherche pour ceux que ça intéresse :
ou
Comment calculer le jour de la fête des mères

function getPaquesTimestamp($Jourj=0, $annee=NULL) {
    /*     * ** Algorithme de Oudin, calcul de Pâque postérieure à 1583 ***
     * Transcription pour le langage PHP par david96 le 23/03/2010
     * *** Source : www.concepteursite.com/paques.php ***
     * Attributs de la fonction :
     * $Jourj : représente le jour de la semaine
     * (0=dimanche, 1=lundi...)
     * par défaut c'est le dimanche
     * $annee : représente l'année recherchée pour la date de Pâques
     * par défaut c'est l'année en cours.
     * */
    $annee = ($annee == NULL) ? date("Y") : $annee;

    $G = $annee % 19;
    $C = floor($annee / 100);
    $C_4 = floor($C / 4);
    $E = floor((8 * $C + 13) / 25);
    $H = (19 * $G + $C - $C_4 - $E + 15) % 30;

    if ($H == 29) {
        $H = 28;
    } elseif ($H == 28 && $G > 10) {
        $H = 27;
    }
    $K = floor($H / 28);
    $P = floor(29 / ($H + 1));
    $Q = floor((21 - $G) / 11);
    $I = ($K * $P * $Q - 1) * $K + $H;
    $B = floor($annee / 4) + $annee;
    $J1 = $B + $I + 2 + $C_4 - $C;
    $J2 = $J1 % 7; //jour de pâques (0=dimanche, 1=lundi....)
    $R = 28 + $I - $J2; // résultat final :)
    $mois = $R > 30 ? 4 : 3; // mois (1 = janvier, ... 3 = mars...)
    $Jour = $mois == 3 ? $R : $R - 31;

    return mktime(0, 0, 0, $mois, $Jour + $Jourj, $annee);
}

/**
 * Retourne le timestamp du dernier jour du mois;
 * le nom de ce jour est donné par la variable
 * dayName qui est une valeur de 0 (dimanche ) à 6 (samedi).
 * 
 */
function getLastDayOfMonth($dayName, $month, $year) {
    $lastDayOfMonthTime = mktime(1, 0, 0, $month, date("t", mktime(0, 0, 0, $month, 1, $year)), $year);
    $retTimestamp = $lastDayOfMonthTime;
    $dayIsCorrect = $dayName == date('w', $lastDayOfMonthTime);
    while(false===$dayIsCorrect){
        $retTimestamp -= 24*3600;
        $dayIsCorrect = (bool)($dayName == (int)date('w', $retTimestamp));
    }
    return $retTimestamp;    
}

/**
 * Retourne le timestamp du premier jour du mois;
 * le nom de ce jour est donné par la variable
 * dayName qui est une valeur de 0 (dimanche ) à 6 (samedi).
 * 
 */
function getFirstDayOfMonth($dayName, $month, $year) {
    $firstDayOfMonthTime = mktime(1, 0, 0, $month, 1, $year);
    $retTimestamp = $firstDayOfMonthTime;
    $dayIsCorrect = $dayName == date('w', $firstDayOfMonthTime);
    while(false===$dayIsCorrect){
        $retTimestamp += 24*3600;
        $dayIsCorrect = (bool)($dayName == (int)date('w', $retTimestamp));
    }
    return $retTimestamp;    
}

for ($i = 2000; $i <= 2040; $i++) {
    $paquesTime = getPaquesTimestamp(0, $i);
    $pentecoteTime = $paquesTime + 49 * 3600 * 24; // la pentecôte est située 49 jours après pâques.
    $datePentecote = date('Y-m-d', $pentecoteTime);
    
    $dernierDimancheMai = date('Y-m-d', getLastDayOfMonth(0, 5, $i));
    // si le dernier dimanche de mai coïncide avec la Pentecôte,
    // on prend le premier dimanche de juin.
    if($dernierDimancheMai==$datePentecote){
        $feteDesMeres = date('Y-m-d', getFirstDayOfMonth(0, 6, $i));
    }
    else{
        $feteDesMeres = $dernierDimancheMai;
    }
    
    
    echo $feteDesMeres;
    echo '<br />';
}

Hors ligne

#13 Le 04/06/2012, à 22:21

david96

Re : [Script] Calcul de la fête des mères

Je n'ai pas encore testé, mais je regarderai cela plus tard, merci smile

Hors ligne

#14 Le 04/06/2012, à 22:32

lingtalfi

Re : [Script] Calcul de la fête des mères

Et tant qu'on y est pour ne pas faire de jaloux, voici pour la fête des pères :


    /**
     * Retourne le timestamp du premier jour du mois;
     * le nom de ce jour est donné par la variable
     * dayName qui est une valeur de 0 (dimanche ) à 6 (samedi).
     * 
     */
     // int
     function getFirstDayOfMonth($dayName, $month, $year, $skipNTimes=0) {
        $firstDayOfMonthTime = mktime(1, 0, 0, $month, 1, $year);
        $retTimestamp = $firstDayOfMonthTime;
        $dayIsCorrect = $dayName == date('w', $firstDayOfMonthTime);
        if (true === $dayIsCorrect && $skipNTimes > 0) {
            $dayIsCorrect = false;
            $skipNTimes--;
        }
        while (false === $dayIsCorrect) {
            $retTimestamp += 24 * 3600;
            $dayIsCorrect = (bool) ($dayName == (int) date('w', $retTimestamp));
            if (true === $dayIsCorrect && $skipNTimes > 0) {
                $dayIsCorrect = false;
                $skipNTimes--;
            }
        }
        return $retTimestamp;
    }

    // date mysql
   function getFeteDesPeres($annee) {
        return date("Y-m-d", getFirstDayOfMonth(0, 06, $annee, 2));
    }


for($i=2000;$i<=2040;$i++){
    echo getFeteDesPeres($i);
    echo '<br />';
}

Hors ligne

#15 Le 04/06/2012, à 22:44

david96

Re : [Script] Calcul de la fête des mères

Le 3ème dimanche du mois de juin.
Merci, c'est bien ça wink

Hors ligne

#16 Le 04/06/2012, à 22:50

david96

Re : [Script] Calcul de la fête des mères

Je mettrais une petite condition pour que l'alerte soit correcte, du genre :

for($i=2000;$i<=2040;$i++){
    if(date("Y")==$i)
    {
          echo getFeteDesPeres($i);
           break;
    }
}

Hors ligne

#17 Le 04/06/2012, à 23:18

marceldo

Re : [Script] Calcul de la fête des mères

Bonjour,

c'est toujours une occasion de réfléchir et de résoudre un problème. Mais sans vouloir être rabat-joie, vu le battage médiatique et commercial que cela génère, difficile d'oublier la date  en réalité !!!


Celui qui n'avance pas... recule

Hors ligne

#18 Le 05/06/2012, à 01:31

david96

Re : [Script] Calcul de la fête des mères

Tu as bien raison, d'ailleurs j'ai dis à mes filles de ne pas m'offrir de cadeau pour la fête des pères, mais au contraire le faire quand ce n'était pas le jour tongue

Édit : étrangement la plus grande de mes filles m'as pris au mots et m'a offert un énorme briquet (je suis fumeur), amusant quand on sait que la fête des pères a été inventée par un vendeur de briquets smile

Dernière modification par david96 (Le 05/06/2012, à 01:35)

Hors ligne

#19 Le 11/06/2012, à 10:17

Vergeylen

Re : [Script] Calcul de la fête des mères

Hello david96,

Personnellement, j'utilise Pcal sous Ubuntu, un petit générateur de calendrier qui permet d'ajouter des rêgles comme "dernier dimanche de mai" ou "tous les premiers jeudis du mois" dans un fichier de config (dont des exemples sont donnés).

Je n'ai pas tout exploré, mais il me semblait possible de faire des rêgles compliquées. Cela permet de générer un calendrier tous les ans, avec des évènements qui ne tombent jamais à la même date. Facile et pratique! :-)

Bonne journée,

Daniel

Hors ligne

#20 Le 11/06/2012, à 10:25

david96

Re : [Script] Calcul de la fête des mères

Merci pour l'info wink

Hors ligne

#21 Le 11/06/2012, à 11:02

pingouinux

Re : [Script] Calcul de la fête des mères

Bonjour à tous,
Pour info, voici une méthode de fainéant pour obtenir la date de Pâques :

$ ncal -e 2012
April  8 2012

$ LANG=fr_FR.utf8 ncal -e 2012
 8 avril 2012

Extrait de man ncal :

-e      Display date of Easter (for western churches).

Hors ligne

#22 Le 11/06/2012, à 11:36

david96

Re : [Script] Calcul de la fête des mères

Bon sang trop fort. tongue
Merci smile

Hors ligne