#1 Le 29/05/2010, à 00: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
Dernière modification par david96 (Le 29/05/2010, à 00:21)
Hors ligne
#2 Le 08/06/2010, à 14: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, à 14:51
- david96
Re : [Script] Calcul de la fête des mères
Hi hi !
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.
Hors ligne
#4 Le 09/06/2010, à 06: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
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, à 07: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 ?
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é .
J'espère que ça t'aide :s
airballman@jabber.ubuntu-fr.org
Traitement d'images, systèmes embarqués et autres astuces Linux!
Hors ligne
#6 Le 09/06/2010, à 10: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
Hors ligne
#7 Le 09/06/2010, à 10: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, à 11: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, à 11:13
- Barthy
Re : [Script] Calcul de la fête des mères
Bien vu, j'avais pas assez poussé mes tests
sudo ku
Hors ligne
#10 Le 09/06/2010, à 11:55
- david96
Re : [Script] Calcul de la fête des mères
Houllà, merci, j'irai voir ça...
Hors ligne
#11 Le 14/06/2010, à 23: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é
Hors ligne
#12 Le 04/06/2012, à 21: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, à 21: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
Hors ligne
#14 Le 04/06/2012, à 21: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, à 21: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
Hors ligne
#16 Le 04/06/2012, à 21: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, à 22: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, à 00: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
É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
Dernière modification par david96 (Le 05/06/2012, à 00:35)
Hors ligne
#19 Le 11/06/2012, à 09: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, à 09:25
- david96
Re : [Script] Calcul de la fête des mères
Merci pour l'info
Hors ligne
#21 Le 11/06/2012, à 10: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, à 10:36
- david96
Re : [Script] Calcul de la fête des mères
Bon sang trop fort.
Merci
Hors ligne