|
begin process at 2008 05 17 13:22:05
Derniers logiciels
|
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 de la même categorie
Commentaires
Discussions en rapport avec ce code source
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | | | 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|
|