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 !

Sujet : probléme calcule dimanche [ Divers / Général ] (sensoide)

vendredi 21 juillet 2006 à 10:43:27 | probléme calcule dimanche

sensoide

Bonjour a tous,
voici donc une source que j'ai pris sur phpcs, mais il y a comme qui dirait un probléme pour le calcul des dimanches et je n'arive pas a voir ou ce trouve le dis probléme.
Voici le code:

function jour_ferie($timestampStart, $timestampEnd)
{
    // Initialisation de la date de début
    $jour = date("d", $timestampStart);
    $mois = date("m", $timestampStart);
    $annee = date("Y", $timestampStart);
    $nbFerie = 0;

    while ($timestampStart <= $timestampEnd)
    {

         // Définition des dates fériées fixes
        if($jour == 01 && $mois == 01) $nbFerie++; // 1er janvier
        if($jour == 01 && $mois == 05) $nbFerie++; // 1er mai
        if($jour == 08 && $mois == 05) $nbFerie++; // 5 mai
        if($jour == 14 && $mois == 07) $nbFerie++; // 14 juillet
        if($jour == 15 && $mois == 08) $nbFerie++; // 15 aout
        if($jour == 01 && $mois == 11) $nbFerie++; // 1 novembre
        if($jour == 11 && $mois == 11) $nbFerie++; // 11 novembre
        if($jour == 25 && $mois == 12) $nbFerie++; // 25 décembre

         // Calcul du jour de pâques
         $date_paques = easter_date($annee);
         $jour_paques = date("d", $date_paques);
         $mois_paques = date("m", $date_paques);
         if($jour_paques == $jour && $mois_paques == $mois) $nbFerie++;
         // Pâques

         // Calcul du jour de l ascension (38 jours après Paques)
         $date_ascension = mktime(date("H", $date_paques),
         date("i", $date_paques),
         date("s", $date_paques),
         date("m", $date_paques),
         date("d", $date_paques) + 39,
         date("Y", $date_paques)
         );
         $jour_ascension = date("d", $date_ascension);
         $mois_ascension = date("m", $date_ascension);
         if($jour_ascension == $jour && $mois_ascension == $mois) $nbFerie++;
         //Ascension

         // Calcul de Pentecôte (11 jours après Paques)
        $date_pentecote = mktime(date("H", $date_ascension),
         date("i", $date_ascension),
         date("s", $date_ascension),
         date("m", $date_ascension),
         date("d", $date_ascension) + 11,
         date("Y", $date_ascension)
         );
         $jour_pentecote = date("d", $date_pentecote);
         $mois_pentecote = date("m", $date_pentecote);
         if($jour_pentecote == $jour && $mois_pentecote == $mois) $nbFerie++;
         //Pentecote

         // Calul des samedis et dimanches
         $jour_julien = unixtojd($timestampStart);
         $jour_semaine = jddayofweek($jour_julien, 0);
         if($jour_semaine == 0) $nbFerie++;
         //dimanche (0)


         // Incrémentation du nombre de jour ( on avance dans la boucle)
         $jour++;
         $timestampStart=mktime(0,0,0,$mois,$jour,$annee);
         $nbJour = ($timestampEnd - $timestampStart / (60*60*24));
         $nbJourOuvrable = $nbJour - jour_ferie($timestampStart,$timestampEnd);

       ->et ça je n'en vois pas l'intéré.


    }
     return $nbFerie;
}


MERCI..




SSDS


vendredi 21 juillet 2006 à 11:31:27 | Re : probléme calcule dimanche
vendredi 21 juillet 2006 à 11:43:33 | Re : problème calcule dimanche

sensoide

Réponse acceptée !
J'ai trouver l'erreur et j'ai corrigez et ça marche du feu de Dieux.

<?php

// Calcul de la différence de date
$date_debutCP = '01/01/2006';
$date_finCP = '31/01/2006';

function NbJours($date_debutCP, $date_finCP)
{
  $tDeb = explode("/", $date_debutCP);
  $tFin = explode("/", $date_finCP);

  $diff = mktime(0, 0, 0, $tFin[1], $tFin[0], $tFin[2]) -
          mktime(0, 0, 0, $tDeb[1], $tDeb[0], $tDeb[2]);

  return(($diff / 86400)+1);

}


  $tDeb = explode("/", $date_debutCP);
  $tFin = explode("/", $date_finCP);

  $timestampEnd = mktime(0, 0, 0, $tFin[1], $tFin[0], $tFin[2]);
  $timestampStart = mktime(0, 0, 0, $tDeb[1], $tDeb[0], $tDeb[2]);


// SERVANT AU CALCUL DES JOURS OUVRABLES
// Fonction retournant le nombre de jour fériés samedis et
// dimanches entre 2 dates entrées en timestamp

function jour_ferie($timestampStart, $timestampEnd)
{
    // Initialisation de la date de début
      $jour = date("d", $timestampStart);
      $mois = date("m", $timestampStart);
      $annee = date("Y", $timestampStart);
    $nbFerie = 0;
    while ($timestampStart <= $timestampEnd)
    {

         // Définition des dates fériées fixes
        if($jour == 01 && $mois == 01) $nbFerie++; // 1er janvier
        if($jour == 01 && $mois == 05) $nbFerie++; // 1er mai
        if($jour == 08 && $mois == 05) $nbFerie++; // 5 mai
        if($jour == 14 && $mois == 07) $nbFerie++; // 14 juillet
        if($jour == 15 && $mois == 08) $nbFerie++; // 15 aout
        if($jour == 01 && $mois == 11) $nbFerie++; // 1 novembre
        if($jour == 11 && $mois == 11) $nbFerie++; // 11 novembre
        if($jour == 25 && $mois == 12) $nbFerie++; // 25 décembre

         // Calcul du jour de pâques
         $date_paques = easter_date($annee);
         $jour_paques = date("d", $date_paques);
         $mois_paques = date("m", $date_paques);
         if($jour_paques == $jour && $mois_paques == $mois) $nbFerie++;
         // Pâques

         // Calcul du jour de l ascension (38 jours après Paques)
         $date_ascension = mktime(date("H", $date_paques),
         date("i", $date_paques),
         date("s", $date_paques),
         date("m", $date_paques),
         date("d", $date_paques) + 39,
         date("Y", $date_paques)
         );
         $jour_ascension = date("d", $date_ascension);
         $mois_ascension = date("m", $date_ascension);
         if($jour_ascension == $jour && $mois_ascension == $mois) $nbFerie++;
         //Ascension

         // Calcul de Pentecôte (11 jours après Paques)
        $date_pentecote = mktime(date("H", $date_ascension),
         date("i", $date_ascension),
         date("s", $date_ascension),
         date("m", $date_ascension),
         date("d", $date_ascension) + 11,
         date("Y", $date_ascension)
         );
         $jour_pentecote = date("d", $date_pentecote);
         $mois_pentecote = date("m", $date_pentecote);
         if($jour_pentecote == $jour && $mois_pentecote == $mois) $nbFerie++;
         //Pentecote

         // Calul des samedis et dimanches
         $jour_julien = unixtojd($timestampStart);
         $jour_semaine = jddayofweek($jour_julien, 0);
         if($jour_semaine == 0||$jour_semaine == 6) $nbFerie++;
         //Samedi (6) et dimanche (0)

         // Incrémentation du nombre de jour ( on avance dans la boucle)
         $jour++;
         $timestampStart=mktime(0,0,0,$mois,$jour,$annee);
         $nbJour = ($timestampEnd - $timestampStart / (60*60*24));
         //$nbJourOuvrable = $nbJour - jour_ferie($timestampStart,$timestampEnd);
          ^c'est effectivement inutile ça fais ralentire^
    }
     return $nbFerie;
}//Fin de la fonction
$totcp =  NbJours($date_debutCP, $date_finCP);
$testcp = $totcp - jour_ferie($timestampStart, $timestampEnd) ;
echo $testcp;
?>




SSDS




Cette discussion est classé dans : date, jour, mois, paques, ascension


Répondre à ce message

Sujets en rapport avec ce message

Toujours a la recherche d'aide pour les dates !!! [ par nagrom_om ] Bon je rééxplique mon probleme. Je choisi une date de depart et une date d'arrivée (demande de congés) je dois calculer le nombre de jours ouvrables p Probleme de boucle, calcul jours ouvrés [ par Akita95 ] Bonjour à tous,J'essaye de faire un formulaire de congés qui calcule le nombre de jours ouvrés entre deux dates données en paramètre puis coverties en calendrier annuel, surligné jours en fonction d'une table [ par rouskard ] Bonjour à tous,J'ai un petit problème dans l'élaboration d'un calendrier annuel. J'aimerais pouvoir faire ressortir les jours où une personne a eu un SUJET POUR QUELQU' UN QUI CONNAIT LE PHP AVEC BASE SQL [ par philou4212 ] je remercie la personne qui peut me donner un coup de mains sur le sujet je coince un  peuVoilà j'ai un calendrier qui fonctionne avec une base sql il traduction date [ par kenny18 ] salut,J'ai un champ type "datetime" dans une table. Je vais rechercher cette date dans mon code pour l'afficher. La date = $row[5] ci-dessous. Mon seu Calendrier / Agenda [ par kitgraphic ] Voilà j'ai un calendrier avec des évènement, tout marche bien , mais je voudrais que le jour actuel (la cellule ou il se trouve soit d'une autre coule Afficher les jours de la semaine... [ par stevethx27 ] Bonjour,je tente (en vain) d'afficher sur une ligne les jours de la semaine. J'ai utilisé un script trouvé sur le site que j'ai modifié et ça donne ma Calendrier Location [ par piep14 ] Bonjour le forum, j'aurais une question à vous soumettre car je bloque. J'ai fait un calendrier avec le code que je vous présente ci après. Le trucs, Gestion de dates [ par tryoruda ] SalutJe souhaite quelques tuyaux pour gérer les dates :- un formulaire avec choix du jour / du mois / de l'année envoie vers un seul champ Mysql date- Pb avec Date() & mktime() [ par LordDaedalus ] BonjourJe suis en train de créer un agenda en utilisant les fonctions date() et mktime().j'utilise $Jour = Date("d",mktime(Date("h")-24*10*7)Le jour e


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.