Calcul le nombre de jours ouvràƒÂ©s entre 2 dates

  Information

Retourne le nombre de jours ouvrés (français) entre 2 dates (yyyy-mm-jj)

Ce code est une amélioration / adaptation du code de Seanron : Jours non-ouvrés français entre deux dates.

Ce script prend en compte les 2 jours donnés 
exemple pour 2 dates du même mois et de même année : 

  • du 5 au 5 il affichera 1 jour ouvré
  • du 5 au 6 il affichera 2 jours ouvrés
  code source classé dans  Dates - Heures

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
 08    
 09    
 10    
 11    
 12    
 13    
 14    
 15    
 16    
 17    
 18    
 19    
 20    
 21    
 22    
 23    
 24    
 25    
 26    
 27    
 28    
 29    
 30    
 31    
 32    
 33    
 34    
 35    
 36    
 37    
 38    
 39    
 40    
 41    
 42    
 43    
 44    
 45    
 46    
 47    
 48    
 49    
 50    
 51    
 52    
 53    
 54    
 55    
 56    
 57    
 58    
 59    
 60    
 61    
 62    
 63    
 64    
 65    
 66    
 67    
 68    
 69    
 70    
 71    
 72    
 73    
 74    
 75    
 76    
 77    
 78    
 79    
 80    
 81    
 82    
 83    
 84    
 85    
 86    
 87    
 88    
 89    
 90    
 91    
 92    
 93    
 94    
 95    
 96    
 97    
 98    
 99    
 100    
 101    
 102    
 103    
 104    
 105    
 106    
 107    
 108    
 109    
 110    
 111    
 112    
 113    
 114    
 115    
 116    
 117    
 118    
 119    
 120    
 121    
 122    
 123    
 124    
 125    
 126    
 127    
 128    
 129    
 130    
 131    
 132    
 133    
 134    
 135    
 136    
 137    
 138    
 139    
 140    
 141    
 142    
 143    
 144    
 145    
 146    
 147    
 148    
 149    
 150    
 151    
 152    
 153    
 154    
                               
<?php
/*---------------------------------------------------------------*/
/*
    Titre : Calcul le nombre de jours ouvrés entre 2 dates                                                             
                                                                                                                          
    URL   : https://phpsources.net/code_s.php?id=666
    Auteur           : yem                                                                                                
    Date édition     : 04 Oct 2012                                                                                        
    Date mise à jour : 29 Aout 2019                                                                                      
    Rapport de la maj:                                                                                                    
    - fonctionnement du code vérifié                                                                                
    - amélioration du code                                                                                             
*/
/*---------------------------------------------------------------*/

    // calcul des années bissextiles
    function leap_year($year)
    {
        return date("L"mktime(00011$year));
    }

    function nb_jours$date1$date)
    {

    $timestamp1    strtotime($date1);
    $timestamp2    strtotime($date2);
    
    $tot 0// total de jours entre les 2 dates

    // dates en jours de l'année ( depuis le 1er jan )
    $datedate("z"$timestamp1) ; // date de depart
    $datedate("z"$timestamp2) ; //date d'arrivée
    
    $day_stamp 86400 //(3600 * 24 ); // un journée en timestamp

    // années des deux dates
    $year1 date("Y"$timestamp1) ;
    $year2 date("Y"$timestamp2) ;

    $num 0// nombre de jours feries a compter sur la duree totale
    $counter 0// la durée entre deux date par année
    
    $year $year1// l'année en cours ( defaut : $year1 )
    
    
// on calcule le nombre de jours de différence entre les deux dates, en
// tenant
// compte des années
    while ( $year <= $year2 )
    {
        $date3         date("d-n-Y"mktime(0001,  1,  $year));
        $timestamp3 strtotime($date3); 
// date de référence pour l'année en cours
        $counter 0// compteur de jours pour chaque année
        
        //on récupère la date de pà¢ques   
        $easterDate   easter_date($year) ;
        $easterDay    date('j'$easterDate) ;
        $easterMonth  date('n'$easterDate) ;
        $easterYear   date('Y'$easterDate) ;
    
        
        
// le tableau sort les jours fériés de l'année depuis le premier
// janvier
        $closed array
        (
            // dates fixes
            date("z"mktime(0001,  1,  $year)),  // 1er janvier
            date("z"mktime(0005,  1,  $year)),  // Fête du travail
            date("z"mktime(0005,  8,  $year)),  
// Victoire des alliés
            date("z"mktime(0007,  14$year)),  // Fête nationale
            date("z"mktime(0008,  15$year)),  // Assomption
            date("z"mktime(000111,  $year)),  // Toussaint
            date("z"mktime(0001111$year)),  // Armistice
            date("z"mktime(0001225$year)),  // Noel

            // Dates basées sur Paques
            date("z"mktime(000$easterMonth$easterDay 1$easterYear)

),  // Lundi de Paques
            date("z"mktime(000$easterMonth$easterDay 39$easterYear

)), // Ascension
            date("z"mktime(000$easterMonth$easterDay 50$easterYear

))  // Lundi de Pentecote
            
        );
        
        
// si c'est la première année -> on commence par la date de depart; 
        // le compteur compte les jours jusqu'au 31dec
        if( $year == $year1 && $year $year2 )
        { 
            $i $date1
            $counter +=  (364+leap_year($year)) ; 
        }

        
// si c'est ni la première ni la dernière année -> on commence au
// premier
// janvier; 
        //le compteur compte tous les jours de l'année
        if( $year $year1 && $year $year2 )
        {
            $i date("z"mktime(0001,  1,  $year));  
            $counter += 364+leap_year($year); 
        }

        // si c'est la dernière année -> on commence au premier janvier; 
        // le compteur va jusqu'a la date d'arrivée
        if( $year == $year2 && $year $year1 )
        { 
            $i date("z"mktime(0001,  1,  $year)); 
            $counter += $date
        }
        
        // si les deux dates sont dans la même année
        if( $year == $year1 && $year == $year2 )
        { 
            $i $date1
            $counter += $date
        }
        
        // on boucle les jours sur la période donnée
        while ( $i <= $counter )
        {
            $tot $tot +1// on ajoute 1 pour chaque jour passé en revue

            if( in_array($i$closed) ) 
            {
                $num++; // on ajoute 1 pour chaque jour férié rencontré
            }
            
            // on compte chaque samedi et chaque dimanche
            if(((date("w"$timestamp3 $i $day_stamp) == 6) or (date("w"
$timestamp3 $i $day_stamp) == 0)) and !in_array($i$closed)) 
            {
                $num++ ;
            }
            $i++;
        }
        $year++ ; // on incremente l'année
    }
    $res $tot $num
    
// nombre de jours entre les 2 dates fournies - nombre de jours non ouvrés
    return $res;
    }
?>

Exemple :

 
 01    
 02    
 03    
 04    
 05    
 06    
 07    
                                
<?php

    echo nb_jours('10 September 2019''10 October 2019');
    // Affiche : 23
?>

          Fonctions du code - Doc officielle PHP

   php.net   Description Versions PHP OUTIL
   array Crée un tableau PHP 4, PHP 5, PHP 7, PHP 8
   date Formate une date/heure locale PHP 4, PHP 5, PHP 7, PHP 8
   easter_date Retourne un timestamp UNIX pour Pâques, à minuit pour une année donnée PHP 4, PHP 5, PHP 7, PHP 8
   echo Affiche une chaîne de caractères PHP 4, PHP 5, PHP 7, PHP 8
   in_array Indique si une valeur appartient à un tableau PHP 4, PHP 5, PHP 7, PHP 8
   mktime Retourne le timestamp UNIX d'une date PHP 4, PHP 5, PHP 7, PHP 8
   return Retourne le controle du programme au module appelant. PHP 4, PHP 5, PHP 7, PHP 8
   strtotime Transforme un texte anglais en timestamp PHP 4, PHP 5, PHP 7, PHP 8

   Dites merci aux auteurs pour leurs travail, ça ne coûte rien et ça fait toujours plaisir wink

[5]

  • avatar

    Invité

    16 Juil 2015 à 18:50

    bravo et merci :)

  • avatar

    Fefers

    09 Mai 2015 à 17:31

    Merci beaucoup. c'est genial. fonctionne de tonner ..  !

  • avatar

    Fefers

    09 Mai 2015 à 10:50

    Bonjour c'est justamen ce que j'ai besoin et je vous remercie enormement,mais je suis debutant, si vous pourriez me dire comment utilise-t-on ce code, que j'essaye y ne donne rien. mille merci

  • avatar

    Vandouzen007

    19 Nov 2013 à 06:59

    Bonjour, Merci beaucoup pour le code et ça marche bien! Mais comment utilise-t-on ce code avec deux input d'entrer de deux dates? Il donne le resultat automatiquement sans clicquer un bouton!   Merci

  • avatar

    Invité

    23 Oct 2012 à 10:21

    Bonjour,
    Je pense qu'il ya un petit erreur au niveau la ligne suivante:
    $date3 = date("d-n-Y", mktime(0, 0, 0, 1, 1, $year));
    il faut modifier la chaine "d-n-Y" par "Y-n-d".
    Cordialement.


 Autres snippets qui pourraient vous intéressez

Calcul les jours non-ouvrés entre 2 dates

Compatibilité : PHP 5, PHP 7

Récupère le nombre de jours non-ouvrés ( Jours fériés en France et week end ( samedi et dimanche ) ) entre deux dates.

Calcul la différence de jour entre 2 dates

Compatibilité : PHP 5, PHP 7

Calcul la différence de jour entre 2 dates à partie de 2 dates passés en paramètre dans la fonction.

Calcul le nombre de jours écoulés depuis l'an zéro

Compatibilité : PHP 5, PHP 7

Cette fonction renvoie le facteur d'une date qui est le nombre de jours écoulés depuis le jour théorique de la naissance de J.C.

Afficher toute les dates entre 2 dates

Compatibilité : PHP 5, PHP 7

Avec la fonction mktime () et 1 boucle vous affichez ligne par ligne les dates comprises entre 2 dates prédéfinies à l'avance.

Nombre de jours dans 1 mois

Compatibilité : PHP 5, PHP 7

Fonction qui calcule le nombre de jours dans 1 mois, entre 1970 et 2037. (Sinon la fonction retourne 0).

Présentation de PHP

PHP débutant et initié 50 Tutoriel

Présentation de MySQL

avatar

Yem

  04 Oct 2012

  SOURCE   Télécharger

Information sur les mises à jour

Dernière mise à jour :

    29 Aout 2019
    fonctionnement du code vérifié
    amélioration du code

16 063 Vues
Compatibilité
PHP 5, 7 et 8+
50 codes

Catégorie :  Dates - Heures

Addition de mois àƒÂ une date
Affiche date et heure dynamiquement
Affiche la date dans une autre langue
Affiche la date de mise à jour d'1 page ou 1 script
Affiche la date du jour en Français
Affiche la date littàƒÂ©rale en Français
Affiche le numàƒÂ©ro de semaine ISO pour Windows
Affiche les dates du mois - Calendrier mensuel
Affiche les jours du mois
Affiche ligne par ligne les dates comprises entre 2 dates
Affiche une date avec le nom du jour et du mois
Ajoute ou soustrait des jours à une date
Calcul et affiche le lever et coucher du soleil
Calcul et trouve la date d'hier
Calcul l'age à partir de l'année
Calcul l'age àƒÂ partir d'une date de naissance
Calcul la date de Paque àƒÂ partir d'une annàƒÂ©e
Calcul la diffàƒÂ©rence de jour entre 2 dates
Calcul la diffàƒÂ©rence de temps du passàƒÂ© au pràƒÂ©sent
Calcul la diffàƒÂ©rence entre 2 heures
Calcul le nombre de jours àƒÂ©coulàƒÂ©s depuis l'an zàƒÂ©ro
Calcul le nombre de jours non-ouvràƒÂ©s entre 2 dates
Calcul le nombre de jours ouvràƒÂ©s entre 2 dates
Calcul le temps restant ou le temps àƒÂ©coulàƒÂ©
Change de format de date us <=> fr
Classement de dates dans 1 fichier
Compte àƒÂ  rebours du nouvel an
Compte le nombre de jour àƒÂ partir d'une date
Convertie de secondes en heures, minutes et secondes
Convertie une date MySQL format US au format FR
Date du jour en français de maniàƒÂ¨re littàƒÂ©rale
DàƒÂ©termine rapidement si un jour est fàƒÂ©riàƒÂ© (fetes mobiles incluses)
Formulaire de date en HTML
Fractionne un cràƒÂ©neau horaire entre l'heure de dàƒÂ©but et celle de fin
Indique si une annàƒÂ©e est bissextile ou pas
Injecte une Date SQL dans un tableau PHP
Lettres dominicales & Epacte julienne
Nombre de jours dans 1 mois
Obtient date + heure ( DATETIME ) au format littàƒÂ©rale
Obtient la saison actuelle dans les 2 hàƒÂ©misphàƒÂ¨res
Quel sont les jours fàƒÂ©riàƒÂ©s en France
Retourne d'une date littàƒÂ©rale la date exacte
Retourne le numàƒÂ©ro de semaine passàƒÂ©e en paramàƒÂ¨tre
Transforme une date dans un format littàƒÂ©raire et sympa
Trouve la date du prochain jour
Trouve les dates dàƒÂ©but et fin de semaine
Trouve si l'annàƒÂ©e est bissextile
Une autre utilisation de la fonction microtime ()
VàƒÂ©rifie la validitàƒÂ© et l'existence d'une date
VàƒÂ©rifie si une date correspond au jour choisi