PHP Obtenir les jours fériés par code

<?php

date_default_timezone_set('Europe/Paris');

function get_jours_feries($year = null) {

    if ($year === null)
         $year = intval(date('Y'));
     
    $easterDate  = easter_date($year);
    $easterDay   = date('j', $easterDate);
    $easterMonth = date('n', $easterDate);
    $easterYear   = date('Y', $easterDate);

    $dates = array(

        // These days have a fixed date
        mktime(0, 0, 0, 1,  1,  $year),  // 1er janvier

        mktime(0, 0, 0, 5,  1,  $year),  // Fête du travail
        mktime(0, 0, 0, 5,  8,  $year),  // Victoire des alliés

        mktime(0, 0, 0, 7,  14, $year),  // Fête nationale
        mktime(0, 0, 0, 8,  15, $year),  // Assomption
        mktime(0, 0, 0, 11, 1,  $year),  // Toussaint
        mktime(0, 0, 0, 11, 11, $year),  // Armistice
        mktime(0, 0, 0, 12, 25, $year),  // Noel

        // These days have a date depending on easter
        mktime(0, 0, 0, $easterMonth, $easterDay + 1,  $easterYear), // Lundi de Pâques

        mktime(0, 0, 0, $easterMonth, $easterDay + 39, $easterYear), // Jeudi de l'Ascension
        mktime(0, 0, 0, $easterMonth, $easterDay + 50, $easterYear), // Lundi de Pentecôte
    );

    // sort dates
    sort($dates);

    // formatting dates
    $dates = array_map(function($time) { return date('Y-m-d', $time); }, $dates);

    return $dates;
}

// output
for ($i = date('Y'); $i <= (date('Y') + 10) ; $i++)
    echo implode("\n", get_jours_feries($i) ), "\n";

Source

Format date francais, sortir les mois en toutes lettres avec mysql

La bonne solution

Tout simplement, en deux rêquetes et avec la fonction DATE_FORMAT()

SET lc_time_names = 'fr_FR';
SELECT DATE_FORMAT(`date`, '%d %M %Y') FROM `t_dates`;

Les options: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_date-format

La feinte ou comment tout faire soi-même

Faire une table des mois français

CREATE TABLE IF NOT EXISTS `rw_mois` (
  `mois_id` int(11) NOT NULL,
  `mois_libelle` varchar(255) NOT NULL,
  PRIMARY KEY (`mois_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `rw_mois` (`mois_id`, `mois_libelle`) VALUES
(1, 'Janvier'),
(2, 'Février'),
(3, 'Mars'),
(4, 'Avril'),
(5, 'Mai'),
(6, 'Juin'),
(7, 'Juillet'),
(8, 'Août'),
(9, 'Septembre'),
(10, 'Octobre'),
(11, 'Novembre'),
(12, 'Décembre');

Requête

SELECT DISTINCT `date`, CONCAT(`mois_libelle`, ' ',YEAR(`date`))
FROM `t_dates`
LEFT JOIN `t_mois` ON MONTH(`t_dates`.`date`) = `t_mois`.`mois_id`;

Résultat:

date | CONCAT(`mois_libelle`, ' ',YEAR(`date`))
2011-12-01 | Décembre 2011
2011-11-02 | Novembre 2011
2011-10-01 | Octobre 2011
2011-09-01 | Septembre 2011
2011-08-01 | Août 2011
2011-07-01 | Juillet 2011
2011-06-01 | Juin 2011
2011-05-02 | Mai 2011
2011-04-01 | Avril 2011
2011-03-01 | Mars 2011
2011-02-28 | Février 2011
2011-01-03 | Janvier 2011