Accueil > > > JOURS OUVRES
JOURS OUVRES
Information sur la source
Description
Bon, une petite fonction toute simple, mais qui peut être un life saver! Trouve le prochain jour ouvrable, 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
Source
- <?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));
- ?>
<?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));
?>
Conclusion
Dispo aussi sur Codyx : http://www.codyx.org/snippet_trouver-prochain-jo ur-ouvrable-partir-date-selon-delta_183.aspx#591
Historique
- 21 juillet 2006 12:02:30 :
- Petit oubli sur les jours variables ;-)
- 21 juillet 2006 12:58:57 :
- Ajout du calcul de la date de Pâques si jamais easter_date () n'est pas disponible.
- 21 juillet 2006 13:01:05 :
- Encore un oubli, grr
- 21 juillet 2006 13:33:20 :
- Bug fix
- 21 juillet 2006 13:38:31 :
- et encore un oubli, un... ;-)
- 21 juillet 2006 13:40:40 :
- c'est pas ma journée...
- 21 juillet 2006 16:14:12 :
- Bug fix sur les dates de l'Ascension et de Pentecôte (merci Jeca).
- 28 septembre 2006 12:07:39 :
- Prise en compte du changement d'heure
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
comparer une date saisie avec une date mysql [ par cLilie ]
Salut,je cherche comment comparer une date saisie au clavier dans une zone de texte et une date provenant de mysql.et aussi j'aimerais pouvoir ajouter
ajouter des jours à une date? [ par cedd ]
Bonjour!Petit problème: je récupère une chaine de caractères qui est une date, de la forme 23/03/2004(enfin, je peux la mettre autrement si besoin es
Nombres de jours entre 2 dates! [ par jimmy69 ]
Bonjour a tous,Voila j'ai un p'tit stress ....si quelqu'un pouvait m'aider!En fait j'enregistre mes donnees ds une table mysql , des donnees comme le
requette si posssible [ par youyou26 ]
bonjour tt le monde je suis un peu despérer j'ai petit calendrier et un fichier ¤.gif et chaque image et enregistré avec une date ce quie j'ai envie c
problemes de lien dans un calendrier [ par hysteria74000 ]
qulequ'un peut me dire pourquoi mes liens, dans mon calendrier, SUIVANT et PRECEDENT ne fonctionnent pas.Voici le code php::$lien=date("Y+m+d", mktime
PHP probleme de boucle avec dates [ par infosub ]
Bonjour, je suis confronté à un petit problème de boucle pour ajouter plusieurs jour à une date.. le script ci-dessous calcule le
Je trouve pas l'erreur sur mon script [ par Akash ]
Salut à tous j'espère que vous pourrez m'aider. Voila le problème :Pour mon script de calendrier evenementiel j'ai besoin d'afficher des évènements pa
date dans un tableau [ par titigrou ]
kikou!!!j'ai une liste déroulante semaine créée a partir des données de la baseet j'ai un tableau avec les joursje voudrais savoir comment on fait, un
Retrouver la date d'il y'a X jours [ par Inekman ]
Salut les amis,Je galère un peu pour retrouver une date à partir d'aujourd'hui d'il y'a X jours...:'(J'ai trouvé pas mal de code qui calcul l'écart en
calculer DATE - 7 jours [ par michelvernet2 ]
salut,comment faire simple pour calculer la date - 7 jours ?du genre ( imaginons y=05 m=01 et d=05) date(ymd) - 7 jours devrait donner : 041229q
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|