|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
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-jour-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
Sources en rapport avec celle ci
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
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version
|