Les Snippets

Connexion

Trouver le prochain jour ouvrable, à partir d'une date, et selon un delta en jours

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 21/07/2006 11:31:10 et initié par malalam [Liste]
Date de mise à jour : 28/09/2006 12:08:07
Vue : 9511
Catégorie(s) : Date & Heure
Langages dispo pour ce code :
- PHP 3, PHP 4, PHP 5
- VB6, VBA
- Voir tous les langages pour ce code snippet



Langage : PHP 3 , PHP 4 , PHP 5
Date ajout : 21/07/2006
Posté par malalam [Liste]
DateMAJ : 28/09/2006
<?php
function getEaster ($iYear = null) {
    if (is_null ($iYear)) {
        $iYear = (int)date ('Y');
    }
    $iN = $iYear - 1900;
    $iA = $iN%19;
    $iB = floor (((7*$iA)+1)/19);
    $iC = ((11*$iA)-$iB+4)%29;
    $iD = floor ($iN/4);
    $iE = ($iN-$iC+$iD+31)%7;
    $iResult = 25-$iC-$iE;
    if ($iResult > 0) {
        $iEaster = strtotime ($iYear.'/04/'.$iResult);
    } else {
        $iEaster = strtotime ($iYear.'/03/'.(31+$iResult));
    }
    return $iEaster;
}
echo 'Paques : ', date ('d-m-Y', getEaster (2006));
echo '<br />';
function getNextOpenDay ($iDate, $iDays) {
    $aBankHolidays = array (
        '1_1',
        '1_5',
        '8_5',
        '14_7',
        '15_8',
        '1_11',
        '11_11',
        '25_12'
        );
    if (function_exists ('easter_date')) {
        $iEaster = easter_date ((int)date('Y'), $iDate);
    } else {
        $iEaster = getEaster ((int)date('Y'), $iDate);
    }
    $aBankHolidays[] = date ('j_n',$iEaster);
    $aBankHolidays[] = date ('j_n', $iEaster + (86400*39));
    $aBankHolidays[] = date ('j_n', $iEaster + (86400*49));
    print_r ($aBankHolidays);
    $iEnd = $iDays * 86400;
    $i = 0;
    while ($i < $iEnd) {
        $i = strtotime ('+1 day', $i);
        if (in_array (date ('w', $iDate+$i),array (0,6) ) || in_array (date ('j_n', $iDate+$i), $aBankHolidays)) {
            $iEnd = strtotime ('+1 day', $iEnd);
            $iDays ++;
        }
    }
    return $iDays;
}
$iDate = strtotime ('2006-06-30');
$iDays = getNextOpenDay ($iDate, 2);
echo 'Prochain jour ouvrable à partir du 30/06/2006, avec un delta de 2 jours : ', date ('d/m/Y', $iDate + (86400*$iDays));
?>
Remarque :
Trouve le prochain jour ouvré, en fonction d'une date et d'un delta en jours.
Par exemple, on passe une commande le 12 juillet 2006, l'envoi dure 2 jours. getNextOpenDay va renvoyer 5 jours, on recevra donc notre commande le 17, car 2 jours après le 12 juille, c'est le 14 (férié), qui est un vendredi. Samedi et dimanche sont non ouvrables, on arrive donc au lundi 7.

getNextOpenDay ($iDate, $iDays) :
$iDate = timestamp de la date
$iDays = nombre de jours de delta

Snippets en rapport avec : Date, Jours, Fériés, Ouvrables



Codes sources en rapport avec : Date, Jours, Fériés, Ouvrables

{PHP} JOURS OUVRES
Bon, une petite fonction toute simple, mais qui peut être un life saver! Trouve le prochain jour ou...

{ColdFusion} TRAVAILLER EN JOURS OUVRABLES
Ce code permet d'afficher les dates en tenant compte des samedis et dimanches ainsi que de personnal...

{Javascript / DHTML} CALENDRIER
code pour créer un calendrier...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRIME FICHIERS DATANT DE PLUS DE 15 JOURS !!!!
Se script en VBS vous permet de suuprimer les fichiers datant de plus de 15 jours vous pouvez bien e...

{ASP / ASP.NET} CALCUL DU NOMBRE DE JOURS OUVRÉS ENTRE DEUX DATES
Calcul le nombre de jours ouvrés entre 2 dates c'est à dire sans les Week-end et les jours. ce code ...

{Visual Basic, VB6, VB.NET, VB 2005} CALCULE ENTRE 2 DATES, SUR DES JOURS OUVRABLES
Cette exemple permet selon la date de d'envoie dans le TextBox(text1.text) de retourner la date de r...

{Visual Basic, VB6, VB.NET, VB 2005} NOMBRE DE JOURS OUVRABLES ENTRE DEUX DATES
Petite fonction qui calcul le nombre de jours ouvrables entre deux dates. Elle compte la journée en...

{Visual Basic, VB6, VB.NET, VB 2005} CREATION DU VERSION SHAREWARE
je recherchais comment pouvoir définir une version shareware car je devais en faire une en exemple p...

{Visual Basic, VB6, VB.NET, VB 2005} SUPPRESSION DE CERTAINS FICHIERS DANS UN RÉPERTOIRE PARTICULIER ET RÉCURSIVEMENT DANS SES SOUS-RÉPERTOIRES, CRÉÉS/MODIFIÉS/ACCÉDÉS A UNE CERTAINE DATE-VBS
Ce programme a été développé en vbscript, les 4 paramètres à entrer sont - le répertoire, dans lequ...

{Visual Basic, VB6, VB.NET, VB 2005} ERYGENDA ÉTERNEL OU PRESQUE. VERSION DE BASE, SANS ATTACHEMENTS À DES DOCUMENTS
Agenda qui peut vous souvenir d'acheter un cercueuil dans 25 ans, à telle date, et à telle heure. La...