Bonjour,
Voila je rencontre un petit problème avec mon code.
ma fonction retourne le nomre de jour ouvré entre deux dates
j'ai comme resultat : Il y a 5 jours ouvrés entre le 06/03/2017 et le 12/03/2017
Décrivez ici votre code ou ce que vous cherchez à faire
je veux maintenant y ajouter un mardi sur deux comme jour ouvré avec les autre jour
mais je ne sais pas comment y prendre
<?php
function get_jour($timestampStart, $timestampEnd)
{
$anDebut = date('Y', $timestampStart);
$anFin = date('Y', $timestampEnd);
$tabFeries = array();
// On boucle dans le cas où l'année de départ serait différente de l'année d'arrivée
$diff_year = date('Y', $timestampEnd) - date('Y', $timestampStart);
for ($i = 0; $i <= $diff_year; $i++) {
$year = (int)date('Y', $timestampStart) + $i;
for ($a = $anDebut; $a <= $anFin; $a++) {
$tabFeries[] = mktime(0, 0, 0, 1, 1, $a); // jour de l'an
$tabFeries[] = mktime(0, 0, 0, 5, 1, $a); // 1 mai
$tabFeries[] = mktime(0, 0, 0, 5, 8, $a); // 8 mai
$tabFeries[] = mktime(0, 0, 0, 7, 14, $a); // 14 juillet
$tabFeries[] = mktime(0, 0, 0, 8, 15, $a); // 15 aout
$tabFeries[] = mktime(0, 0, 0, 11, 1, $a); // 1 novembre
$tabFeries[] = mktime(0, 0, 0, 11, 11, $a); // 11 novembre
$tabFeries[] = mktime(0, 0, 0, 12, 25, $a); // 25 décembre
$paques = easter_date($a);
$tabFeries[] = mktime(0, 0, 0, date('m', $paques), date('d', $paques) + 1, $a); // lundi de paques
$tabFeries[] = mktime(0, 0, 0, date('m', $paques), date('d', $paques) + 39, $a); // ascension
$tabFeries[] = mktime(0, 0, 0, date('m', $paques), date('d', $paques) + 50, $a); // pentecote
}
$nb_jour_ouvre = 0;
while ($timestampStart < $timestampEnd) {
if (!in_array(date('w', $timestampStart), array(0, 6))
&& !in_array(date('j_n_' . date('Y', $timestampStart), $timestampStart), $tabFeries)
) {
$nb_jour_ouvre++;
}
$timestampStart += 86400;
}
return $nb_jour_ouvre;
}
}
// Exemple : Du 11 au 15 juillet il n'y a qu'un jour ouvré (week-end + 1 jours férié)
$timestampStart= strtotime('2017-03-06');
$timestampEnd = strtotime('2017-03-12');
$nb_jours_ouvres = get_jour($timestampStart, $timestampEnd);
echo 'Il y a '.$nb_jours_ouvres.' jours ouvrés entre le '.date('d/m/Y', $timestampStart).' et le '.date('d/m/Y', $timestampEnd);
?>
je veux prendre un mardi sur deux comme jour ouvé avec les autre jour
jai fait quelque chose comme
/les jours de la semaine
// $jour_semaine [] = 7;
//$arr_wdnsday[] = $jour_semaine[3]*$jour_semaine/2;
mais ca rien donné
et j'ai vu des reponses et des commentaire dans le forum mais tout d'un coup elles sont disparu
Décrivez ici vos erreurs ou ce que vous obtenez à la place de ce que vous attendez :(
je vous remerci
hello, en effet ton précédent post a disparu...
je résume, ton code :
/les jours de la semaine
// $jour_semaine [] = 7;
//$arr_wdnsday[] = $jour_semaine[3]*$jour_semaine/2;
ne veut rien dire :)
tu pourrais faire un truc du genre :
function get_jour($timestampStart, $timestampEnd)
{
$mardi_semaine1 = 1; // le 1er mardi de l'année est il ouvre ? 1 oui, on bosse, 0 non, on glande
...
if (!in_array(date('w', $timestampStart), array(0, 6))
&& !in_array(date('j_n_' . date('Y', $timestampStart), $timestampStart), $tabFeries)
) {
if(date('w', $timestampStart) != 2) // si c po un mardi
$nb_jour_ouvre++;
elseif(date('W', $timestampStart) % 2 == $mardi_semaine1) // si c un mardi dans semaine ouvre
$nb_jour_ouvre++;
}
...
/les jours de la semaine
// $jour_semaine [] = 7;
//$arr_wdnsday[] = $jour_semaine[3]*$jour_semaine/2;
ne veut rien dire :)
Je plussoie,
comme on le lui a dit dans les posts précédents (supprimés) d'ailleurs.
:) @SLK, oui mais cette fois ci il a fait un bon copier-coller : son post est clean ;)
ça m'héritait bien une soluce...
cela dit j'aimerai bien savoir ce qu'il pensait faire de son code :
/les jours de la semaine
// $jour_semaine [] = 7; // <-- là tu push 7 dans ton tableau ; pourquoi ? tu veux lui dire qu'il y a 7 jours dans la semaine ? si oui, c po bon ;)
//$arr_wdnsday[] = $jour_semaine[3]*$jour_semaine/2; // ton index 3 n'existe po si la ligne précédente est la déclaration de ton tableau et /2 un tableau je connais po...
bref @kba, je ne connais pas ton niv en php (voir en code), mais avant de penser réussir à coder qqc qui fonctionne il faut avoir certaines bases et donc se former... le copier-coller à ses limites. le langage et sa logique aussi. je ne te jette pas l'opprobre (moi aussi je suis nul dans plein de domaines comme laravel, angular que je débute ;) ) coder c apprendre à raisonner d'une manière particulière en fct de l'environnement (langage, framework), ça demande du temps et de la remise en question....
bref apprendre à coder c comme apprendre une nouvelle langue avec sa logique et sa culture. c po facile, mais ça vaut le coup !!
continue de coder :)
bonjour,
je suis un debutant dans le codage
dans ce bou de code je voulait declarer un tableau de 7 indices(je 7 jour de le samaine
et ensuite faire une condition en prenant l'indice du jour voulu dans mon tableau
mais une fois par deux semaine j'ai reflechi a l'algo mais je n'ai pas trouver cest pour ça j'ai demandé votre aide
et je vous remerci pour votre aide et merci pour les conseils
@saibe,
oui ça fonctione parfaitement
j'ai le resultat : Il y a 15 jours ouvrés entre le 06/03/2017 et le 29/03/2017
ça prend pas le 6 et le 29 juste les jour compris
merci bien (like)
re,
pour que ça prenne le 29 tu modifies légèrement ton while
while ($timestampStart <= $timestampEnd) {
content d'avoir pu t'aider....