PHP – Dates et fêtes en Français

Il y a plusieurs semaines que je n’alimente plus ce blog et c’est bien dommage, mais cela signifie aussi que les affaires fonctionnent pour moi et que je n’ai plus le temps de me consacrer aux tutos et actualités sur le développement web. Mais ce n’est pas pour autant que je dois laisser de coté mes lecteurs et ne plus assurer une veille sur mon propre blog. Pour cette raison, aujourd’hui je vais vous présenter un début de classe PHP que vous pourrez améliorer, modifier et agrémenter.

Cette classe, que l’on nommera pour commencer « ludikcalendar » a pour objectif de Franciser les dates, de nous ressortir les jours et mois en français et de nous donner la fête d’un jour souhaité.

ludikcalendar-php-dates-fr

Bien entendu, il y a pleins de solutions et de méthodes déjà existantes, mais c’est une manière d’utiliser et d’apprendre le fonctionnement de PHP.

Donc voyons un peu cette classe :

<?php 
/** 
* ludikcalendar 
* Classe (plugin) de manipulation pour éléments de calendrier - PHP 5 oblige 
*/ 

class ludikcalendar{ 
	
	/** 
	* Tableau avec jour dans l'année, num mois, num jour/mois et la fête 
	* @var array 
	* @access private 
	*/ 
	private $cal_fetes = array( 1 => array('1','1','Jour de l\'an'),<br ?--> 2 => array('1','2','Basile'),
	3 => array('1','3','Geneviève'),
	4 => array('1','4','Odilon'),
	5 => array('1','5','Edouard'),
	6 => array('1','6','Mélaine'),
	7 => array('1','7','Raymond'),
	8 => array('1','8','Lucien'),
	9 => array('1','9','Alix'),
	10 => array('1','10','Guillaume'),
	11 => array('1','11','Pauline'),
	12 => array('1','12','Tatiana'),
	13 => array('1','13','Yvette'),
	14 => array('1','14','Nina'),
	15 => array('1','15','Rémi'),
	16 => array('1','16','Marcel'),
	17 => array('1','17','Roseline'),
	18 => array('1','18','Prisca'),
	19 => array('1','19','Marius'),
	20 => array('1','20','Sébastien'),
	21 => array('1','21','Agnès'),
	22 => array('1','22','Vincent'),
	23 => array('1','23','Banard'),
	24 => array('1','24','François de Sales'),
	25 => array('1','25','Conversion de Paul'),
	26 => array('1','26','Paule'),
	27 => array('1','27','Angèle'),
	28 => array('1','28','Thomas d\'Aquin'),
	29 => array('1','29','Gildas'),
	30 => array('1','30','Martine'),
	31 => array('1','31','Marcelle'),
	32 => array('2','1','Ella'),
	33 => array('2','2','Chandeleur'),
	34 => array('2','3','Blaise'),
	35 => array('2','4','Véronique'),
	36 => array('2','5','Agathe'),
	37 => array('2','6','Gaston'),
	38 => array('2','7','Eugènie'),
	39 => array('2','8','Jacqueline'),
	40 => array('2','9','Apolline'),
	41 => array('2','10','Arnaud'),
	42 => array('2','11','Notre Dame de Lourdes'),
	43 => array('2','12','Félix'),
	44 => array('2','13','Béatrice'),
	45 => array('2','14','Valentin'),
	46 => array('2','15','Claude'),
	47 => array('2','16','Julienne'),
	48 => array('2','17','Alexis'),
	49 => array('2','18','Bernadette'),
	50 => array('2','19','Gabin'),
	51 => array('2','20','Aimée'),
	52 => array('2','21','Damien'),
	53 => array('2','22','Isabelle'),
	54 => array('2','23','Lazare'),
	55 => array('2','24','Modeste'),
	56 => array('2','25','Roméo'),
	57 => array('2','26','Nestor'),
	58 => array('2','27','Honorine'),
	59 => array('2','28','Romain'),
	60 => array('21','29','Auguste'),
	61 => array('3','1','Aubin'),
	62 => array('3','2','Charles le Bon'),
	63 => array('3','3','Guénolé'),
	64 => array('3','4','Casimir'),
	65 => array('3','5','Olive'),
	66 => array('3','6','Colette'),
	67 => array('3','7','Félicité'),
	68 => array('3','8','Jean de Dieu'),
	69 => array('3','9','Françoise'),
	70 => array('3','10','Vivien'),
	71 => array('3','11','Rosine'),
	72 => array('3','12','Justine'),
	73 => array('3','13','Rodrigue'),
	74 => array('3','14','Mathilde'),
	75 => array('3','15','Louise'),
	76 => array('3','16','Bénédicte'),
	77 => array('3','17','Patrice'),
	78 => array('3','18','Cyrille'),
	79 => array('3','19','Joseph'),
	80 => array('3','20','Herbert'),
	81 => array('3','21','Clémence - PRINTEMPS'),
	82 => array('3','22','Léa'),
	83 => array('3','23','Victorien'),
	84 => array('3','24','Catherine'),
	85 => array('3','25','Annonciation'),
	86 => array('3','26','Larissa'),
	87 => array('3','27','Habib'),
	88 => array('3','28','Gontran'),
	89 => array('3','29','Gwladys'),
	90 => array('3','30','Amédée'),
	91 => array('3','31','Benjamin'),
	92 => array('4','1','Hugues'),
	93 => array('4','2','Sandrine'),
	94 => array('4','3','Richard'),
	95 => array('4','4','Isidore'),
	96 => array('4','5','Irène'),
	97 => array('4','6','Marcellin'),
	98 => array('4','7','Jean-Baptiste de la Salle'),
	99 => array('4','8','Julie'),
	100 => array('4','9','Gautier'),
	101 => array('4','10','Fulbert'),
	102 => array('4','11','Stanislas'),
	103 => array('4','12','Jules'),
	104 => array('4','13','Ida'),
	105 => array('4','14','Maxime'),
	106 => array('4','15','Paterne'),
	107 => array('4','16','Benoît et Joseph'),
	108 => array('4','17','Anicet'),
	109 => array('4','18','Parfait'),
	110 => array('4','19','Emma'),
	111 => array('4','20','Odette'),
	112 => array('4','21','Anselme'),
	113 => array('4','22','Alexandre'),
	114 => array('4','23','Georges'),
	115 => array('4','24','Fidèle'),
	116 => array('4','25','Marc'),
	117 => array('4','26','Alida'),
	118 => array('4','27','Zita'),
	119 => array('4','28','Valérie'),
	120 => array('4','29','Catherine de Sienne'),
	121 => array('4','30','Robert'),
	122 => array('5','1','Fête du travail'),
	123 => array('5','2','Boris'),
	124 => array('5','3','Philippe et Jacques'),
	125 => array('5','4','Sylvain'),
	126 => array('5','5','Judith'),
	127 => array('5','6','Prudence'),
	128 => array('5','7','Gisèle'),
	129 => array('5','8','Armistice 1945'),
	130 => array('5','9','Jeanne d\'Arc'),
	131 => array('5','10','Solange'),
	132 => array('5','11','Estelle'),
	133 => array('5','12','Achille'),
	134 => array('5','13','Rolande'),
	135 => array('5','14','Matthias'),
	136 => array('5','15','Denise'),
	137 => array('5','16','Honoré'),
	138 => array('5','17','Pascal'),
	139 => array('5','18','Eric'),
	140 => array('5','19','Yves'),
	141 => array('5','20','Bernardin'),
	142 => array('5','21','Constantin'),
	143 => array('5','22','Emile'),
	144 => array('5','23','Didier'),
	145 => array('5','24','Donatien'),
	146 => array('5','25','Sophie'),
	147 => array('5','26','Bérenger'),
	148 => array('5','27','Augustin'),
	149 => array('5','28','Germain'),
	150 => array('5','29','Aymar'),
	151 => array('5','30','Ferdinand'),
	152 => array('5','31','Visitation de la Sainte Vierge'),
	153 => array('6','1','Justin'),
	154 => array('6','2','Blandine'),
	155 => array('6','3','Kévin'),
	156 => array('6','4','Clotilde'),
	157 => array('6','5','Igor'),
	158 => array('6','6','Norbert'),
	159 => array('6','7','Gilbert'),
	160 => array('6','8','Médard'),
	161 => array('6','9','Diane'),
	162 => array('6','10','Landry'),
	163 => array('6','11','Barnabé'),
	164 => array('6','12','Guy'),
	165 => array('6','13','Antoine de Padoue'),
	166 => array('6','14','Elisée'),
	167 => array('6','15','Germaine'),
	168 => array('6','16','Jean François Régis'),
	169 => array('6','17','Hervé'),
	170 => array('6','18','Léonce'),
	171 => array('6','19','Romuald'),
	172 => array('6','20','Silvère'),
	173 => array('6','21','Rodolph - ETE'),
	174 => array('6','22','Alban'),
	175 => array('6','23','Audrey'),
	176 => array('6','24','Jean-Baptiste'),
	177 => array('6','25','Prosper'),
	178 => array('6','26','Anthelme'),
	179 => array('6','27','Fernand'),
	180 => array('6','28','Irénée'),
	181 => array('6','29','Pierre et Paul'),
	182 => array('6','30','Martial'),
	183 => array('7','1','Thierry'),
	184 => array('7','2','Martinien'),
	185 => array('7','3','Thomas'),
	186 => array('7','4','Florent'),
	187 => array('7','5','Antoine'),
	188 => array('7','6','Mariette'),
	189 => array('7','7','Raoul'),
	190 => array('7','8','Thibault'),
	191 => array('7','9','Amandine'),
	192 => array('7','10','Ulrich'),
	193 => array('7','11','Benoït'),
	194 => array('7','12','Olivier'),
	195 => array('7','13','Henri et Joël'),
	196 => array('7','14','Fête Nationale'),
	197 => array('7','15','Donald'),
	198 => array('7','16','Nte Dame Mt Carmel'),
	199 => array('7','17','Charlotte'),
	200 => array('7','18','Frédéric'),
	201 => array('7','19','Arsène'),
	202 => array('7','20','Marina'),
	203 => array('7','21','Victor'),
	204 => array('7','22','Marie Madeleine'),
	205 => array('7','23','Brigitte'),
	206 => array('7','24','Christine'),
	207 => array('7','25','Jacques'),
	208 => array('7','26','Anne et Joachim'),
	209 => array('7','27','Nathalie'),
	210 => array('7','28','Samson'),
	211 => array('7','29','Marthe'),
	212 => array('7','30','Juliette'),
	213 => array('7','31','Ignace de Loyola'),
	214 => array('8','1','Alphonse'),
	215 => array('8','2','Julien et Eymard'),
	216 => array('8','3','Lydie'),
	217 => array('8','4','Jean-Marie Vianney'),
	218 => array('8','5','Abel'),
	219 => array('8','6','Transfiguration'),
	220 => array('8','7','Gaétan'),
	221 => array('8','8','Dominique'),
	222 => array('8','9','Amour'),
	223 => array('8','10','Laurent'),
	224 => array('8','11','Claire'),
	225 => array('8','12','Clarisse'),
	226 => array('8','13','Hippolyte'),
	227 => array('8','14','Evrard'),
	228 => array('8','15','Assomption'),
	229 => array('8','16','Armel'),
	230 => array('8','17','Hyacinthe'),
	231 => array('8','18','Hélène'),
	232 => array('8','19','Jean Eudes'),
	233 => array('8','20','Bernard'),
	234 => array('8','21','Christophe'),
	235 => array('8','22','Fabrice'),
	236 => array('8','23','Rose de Lima'),
	237 => array('8','24','Barthélémy'),
	238 => array('8','25','Louis'),
	239 => array('8','26','Natacha'),
	240 => array('8','27','Monique'),
	241 => array('8','28','Augustin'),
	242 => array('8','29','Sabine'),
	243 => array('8','30','Fiacre'),
	244 => array('8','31','Aristide'),
	245 => array('9','1','Gilles'),
	246 => array('9','2','Ingrid'),
	247 => array('9','3','Grégoire'),
	248 => array('9','4','Rosalie'),
	249 => array('9','5','Raïssa'),
	250 => array('9','6','Bertrand'),
	251 => array('9','7','Reine'),
	252 => array('9','8','Nativité'),
	253 => array('9','9','Alain'),
	254 => array('9','10','Inès'),
	255 => array('9','11','Adelphe'),
	256 => array('9','12','Apollinaire'),
	257 => array('9','13','Aimé'),
	258 => array('9','14','Croix Glorieuse'),
	259 => array('9','15','Roland'),
	260 => array('9','16','Edith'),
	261 => array('9','17','Renaud'),
	262 => array('9','18','Nadège'),
	263 => array('9','19','Emilie'),
	264 => array('9','20','Davy'),
	265 => array('9','21','Matthieu'),
	266 => array('9','22','Maurice'),
	267 => array('9','23','Constant - AUTOMNE'),
	268 => array('9','24','Thècle'),
	269 => array('9','25','Hermann'),
	270 => array('9','26','Côme et Damien'),
	271 => array('9','27','Vincent de Paul'),
	272 => array('9','28','Venceslas'),
	273 => array('9','29','Michel, Gabriel et Raphaël'),
	274 => array('9','30','Jérôme'),
	275 => array('10','1','Thérèse de l\'Enfant Jésus'),
	276 => array('10','2','Léger'),
	277 => array('10','3','Gérard'),
	278 => array('10','4','François d\'Assise'),
	279 => array('10','5','Fleur'),
	280 => array('10','6','Bruno'),
	281 => array('10','7','Serge'),
	282 => array('10','8','Pélagie'),
	283 => array('10','9','Denis'),
	284 => array('10','10','Ghislain'),
	285 => array('10','11','Firmin'),
	286 => array('10','12','Wilfried'),
	287 => array('10','13','Géraud'),
	288 => array('10','14','Juste'),
	289 => array('10','15','Thérèse d\'Avila'),
	290 => array('10','16','Edwige'),
	291 => array('10','17','Baudoin'),
	292 => array('10','18','Luc'),
	293 => array('10','19','René'),
	294 => array('10','20','Adeline'),
	295 => array('10','21','Céline'),
	296 => array('10','22','Elodie'),
	297 => array('10','23','Jean de Capistran'),
	298 => array('10','24','Florentin'),
	299 => array('10','25','Crépin'),
	300 => array('10','26','Dimitri'),
	301 => array('10','27','Emeline'),
	302 => array('10','28','Jude'),
	303 => array('10','29','Narcisse'),
	304 => array('10','30','Bienvenu'),
	305 => array('10','31','Quentin'),
	306 => array('11','1','Toussaint'),
	307 => array('11','2','Défunts'),
	308 => array('11','3','Hubert'),
	309 => array('11','4','Charles'),
	310 => array('11','5','Sylvie'),
	311 => array('11','6','Bertille'),
	312 => array('11','7','Carine'),
	313 => array('11','8','Geoffroy'),
	314 => array('11','9','Théodore'),
	315 => array('11','10','Léon'),
	316 => array('11','11','Armistice 1918'),
	317 => array('11','12','Christian'),
	318 => array('11','13','Brice'),
	319 => array('11','14','Sidoine'),
	320 => array('11','15','Albert'),
	321 => array('11','16','Marguerite'),
	322 => array('11','17','Elisabeth'),
	323 => array('11','18','Aude'),
	324 => array('11','19','Tanguy'),
	325 => array('11','20','Edmond'),
	326 => array('11','21','Présence de Marie'),
	327 => array('11','22','Cécile'),
	328 => array('11','23','Clément'),
	329 => array('11','24','Flora'),
	330 => array('11','25','Catherine'),
	331 => array('11','26','Delphine'),
	332 => array('11','27','Sévrin'),
	333 => array('11','28','Jacques de la Marche'),
	334 => array('11','29','Saturnin'),
	335 => array('11','30','André'),
	336 => array('12','1','Florence'),
	337 => array('12','2','Viviane'),
	338 => array('12','3','François Xavier'),
	339 => array('12','4','Barbara'),
	340 => array('12','5','Gérald'),
	341 => array('12','6','Nicolas'),
	342 => array('12','7','Ambroise'),
	343 => array('12','8','Immaculée Conception'),
	344 => array('12','9','Pierre Fourier'),
	345 => array('12','10','Romaric'),
	346 => array('12','11','Daniel'),
	347 => array('12','12','Jeanne-Françoise de Chantal'),
	348 => array('12','13','Lucie'),
	349 => array('12','14','Odile'),
	350 => array('12','15','Ninon'),
	351 => array('12','16','Alice'),
	352 => array('12','17','Gaël'),
	353 => array('12','18','Gatien'),
	354 => array('12','19','Urbain'),
	355 => array('12','20','Théophile'),
	356 => array('12','21','HIVER'),
	357 => array('12','22','Françoise Xavière'),
	358 => array('12','23','Armand'),
	359 => array('12','24','Adèle'),
	360 => array('12','25','Noël'),
	361 => array('12','26','Etienne'),
	362 => array('12','27','Jean'),
	363 => array('12','28','Innocents'),
	364 => array('12','29','David'),
	365 => array('12','30','Roger'),
	366 => array('12','31','Sylvestre')

	);

	/**
	* Jour de la semainde en Fr à utiliser avec date et w
	* @var array
	* @access private
	*/
	private $jour_week = array(

	0 => 'Dimanche',
	1 => 'Lundi',
	2 => 'Mardi',
	3 => 'Mercredi',
	4 => 'Jeudi',
	5 => 'Vendredi',
	6 => 'Samedi'

	);

	/**
	* Jour du mois en Fr à utiliser avec date et n
	* @var array
	* @access private
	*/
	private $mois_fr = array(

	1 => 'Janvier',
	2 => 'Février',
	3 => 'Mars',
	4 => 'Avril',
	5 => 'Mais',
	6 => 'Juin',
	7 => 'Juillet',
	8 => 'Aout',
	9 => 'Septembre',
	10 => 'Octobre',
	11 => 'Novembre',
	12 => 'Décembre'

	);

	/**
	* Constructeur
	* Initialisation des variables
	* @return void
	*/
	public function __construct(){
	// Pour l'instant nada
	}

	/**
	* Méthode public (getFete([...])) donne la fête du jour passé en argument
	* @param int $date :: timestamp
	* @return $string
	*/
	public function getFete($date = null){

		if($date == null)
			$date = time();

		$hoy_mes = date('m', $date);
		$hoy_dia = date('d', $date);

		foreach($this->cal_fetes as $cle=>$valeur){

			if($valeur[0] == $hoy_mes AND $valeur[1] == $hoy_dia)
			return $valeur[2];

		}

		return false;

	}

	/**
	* Méthode public (getJourFr([...])) renvoie le nom du jour en vf du jour passé en argument
	* @param int $date :: timestamp
	* @return $string
	*/
	public function getJourFr($date = null){

		if($date == null)
			$date = time();

		return $this->jour_week[date('w', $date)];

	}

	/**
	* Méthode public (getMoisFr([...])) renvoie le nom du mois en vf du jour passé en argument
	* @param int $date :: timestamp
	* @return $string
	*/
	public function getMoisFr($date = null){

		if($date == null)
			$date = time();

		return $this->mois_fr[date('n', $date)];

	}

}

?>

On peut constater dans un premier temps que c’est une sorte de base de données des jours de fêtes. Très utile dans le sens ou beaucoup d’aides sur le web proposent d’enregistrer tout ça dans une BDD type mysql etc… C’est pas toujours pratique et question installation une perte de temps.

Pour l’instant, et pour cette démo, nous n’auront que 3 méthodes, une première permettant de connaitre la fête du jour passé en argument (le jour doit être un Timestamp sous peine de renvoyer une erreur). Par défaut nous auront le jour actuel.

exemple d’utilisation :

include('ludikcalendar.class.php');
$dateClass = new ludikcalendar();
echo $dateClass->getFete();// renverra la fête du jour courant (exemple pour un 18 aout : Hélène)
echo $dateClass->getFete(strtotime('12-02-2010'));// renverra la fête du 2 décembre donc Viviane

La deuxième méthode permet d’avoir des jours en français, et toujours en passant un argument timestamp et par défaut le jour actuel.

exemple d’utilisation :

include('ludikcalendar.class.php');
$dateClass = new ludikcalendar();
echo $dateClass->getJourFr();// renverra le nom du jour courant en fr (exemple pour un 18 aout 2010 : Mercredi)
echo $dateClass->getJourFr(strtotime('12-02-2010'));// renverra le nom du jour du 2 décembre en fr donc jeudi

La troisième méthode permet d’avoir des mois en français cette fois, et toujours en passant un argument timestamp et par défaut le mois actuel.

exemple d’utilisation :

include('ludikcalendar.class.php');
$dateClass = new ludikcalendar();
echo $dateClass->getMoisFr();// renverra le nom du mois courant en fr (exemple pour un 18 aout 2010 : Aout)
echo $dateClass->getMoisFr(strtotime('12-02-2010'));// renverra le nom du mois du 2 décembre en fr donc Décembre

Voilà pour cette petite classe php qui vous permet de vous entrainer et d’étudier la manière de créer des classes en PHP5.

Si vous avez réalisé des améliorations ou si vous voyez une erreur, n’hésitez pas à le dire.

Vos commentaires sont les bienvenus 🙂

Bon code à tous !

Téléchargez ludikcalendar.class.php

Articles qui pourraient vous intéresser :

Author: Franck Pertegas

Share This Post On

Trackbacks/Pingbacks

  1. Centos – Plesk – Mise à jour version PHP 5.1 vers 5.2 | LudiBlog - [...] PHP – Dates et fêtes en Français [...]
  2. PHP – Class – De l’importance du Flux RSS | LudiBlog - [...] PHP – Dates et fêtes en Français [...]
  3. PHP – Installer XDebug sous WAMP | LudiBlog - [...] PHP – Dates et fêtes en Français [...]
  4. Serveur – Faire pointer son domaine sur un dossier particulier | LudiBlog - [...] PHP – Dates et fêtes en Français [...]
  5. PHP – Tableau des départements Français | LudiBlog - [...] PHP – Dates et fêtes en Français [...]

Submit a Comment

Votre adresse e-mail ne sera pas publiée.