Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/06/2011, 22h19   #1
Débutant
 
Inscription : mai 2005
Messages : 1 957
Détails du profil
Informations personnelles :
Localisation : Suisse

Informations forums :
Inscription : mai 2005
Messages : 1 957
Points : 615
Points : 615
Par défaut Comment calculer le nombre de jours entre deux dates

Bonjour,

Je cherche en vain une solution pour calculer le nombres de jour entre deux dates.
mais il faudrait qu0il ne tienne pas compte des week-end et des jours fériées paramétré.

Comment puis-je.
1) Définir les jour fériées
2) Et accessoirement les jour fériées?

Milles mercis pour votre aide
__________________
Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!
pierrot10 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 07h34   #2
Rédacteur/Modérateur
 
Avatar de andry.aime
 
Homme Andry Aimé
Inscription : septembre 2007
Messages : 5 128
Détails du profil
Informations personnelles :
Nom : Homme Andry Aimé
Localisation : Ile Maurice

Informations forums :
Inscription : septembre 2007
Messages : 5 128
Points : 7 270
Points : 7 270
Bonjour,

date_diff
Pour les jours fériés, je ne sais pas si c'est possible.

A+.
andry.aime est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 10h15   #3
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Les jours fériés se calculent assez facilement :

Code :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
class Date_Ferie
{
 
    private $tabDay = array();
 
    private $annee;
 
    public function __construct($annee)
    {
        $this->annee    = $annee;
        $this->tabDay[] = $annee . '-01-01';
        $this->tabDay[] = ($annee + 1) . '-01-01';
        $this->tabDay[] = ($annee - 1) . '-01-01';
        $this->tabDay[] = $annee . '-05-01';
        $this->tabDay[] = $annee . '-05-08';
        $this->tabDay[] = $annee . '-07-14';
        $this->tabDay[] = $annee . '-08-15';
        $this->tabDay[] = $annee . '-11-01';
        $this->tabDay[] = $annee . '-11-11';
        $this->tabDay[] = $annee . '-12-25';
        $this->computeDay();
    }
 
    private function computeDay()
    {
        //Paques
        $tsPaques = @easter_date($this->annee);
        $this->tabDay[] = date("Y-m-d", $tsPaques + 86400);
        //Ascencion
        $this->tabDay[] = date("Y-m-d", strtotime('+39 days', $tsPaques));
        //Pantecote
        $this->tabDay[] = date("Y-m-d", strtotime('+50 days', $tsPaques));
    }
 
	//Format de la date Y-m-d
    public function isFerie($date)
    {        
		return in_array($date, $this->tabDay);
    }
 
}
 
$date= new Date_Ferie(2011);
$date->isFerie('2011-12-25'); // true
Ce petit bout de code permet de vérifier si une date au format Y-m-d est une date fériée ou non (selon les jour férié français).

Il te suffit donc de simplement vérifier si les dates dans ton interval sont fériées ou non puis de soustraire le nombre de jours fériés au résultat du nombre de jour entre tes deux dates.

Note : Le code présenté est plus fait pour vérifier une date en particulier , si tu as beaucoup de date , il serait judicieux de l'adapter pour être plus performant.
grunk est déconnecté   Envoyer un message privé Réponse avec citation 21
Vieux 21/06/2011, 12h19   #4
Modérateur
 
Avatar de Bisûnûrs
 
Josselin
Développeur Web
Inscription : janvier 2004
Messages : 9 050
Détails du profil
Informations personnelles :
Nom : Josselin
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2004
Messages : 9 050
Points : 12 181
Points : 12 181
Citation:
Envoyé par grunk Voir le message
(selon les jour férié français)
Ca dépend où l'on se trouve en France. En Alsace/Moselle, il y a deux jours fériés en plus : Le vendredi saint et le 26 décembre.
Bisûnûrs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 13h46   #5
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par Bisûnûrs Voir le message
Ca dépend où l'on se trouve en France. En Alsace/Moselle, il y a deux jours fériés en plus : Le vendredi saint et le 26 décembre.
L'Alsace/Lorraine serait redevenu française ?
grunk est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 21/06/2011, 16h42   #6
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

grunk => Juste une petite remarque : le décalage de la Pentecôte est de 49 jours et non pas 50.

A titre d'information, quelle est l'utilité de prendre le 1er janvier de l'année -1 et de l'année +1 ?
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 17h01   #7
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Envoyé par jeca Voir le message
Bonjour,

grunk => Juste une petite remarque : le décalage de la Pentecôte est de 49 jours et non pas 50.

A titre d'information, quelle est l'utilité de prendre le 1er janvier de l'année -1 et de l'année +1 ?
Dans le code la pentecote est à +50 car c'est le lundi qui est férié alors que easter_day retourne le dimanche tout comme la pantecote qui est un dimanche.

Pour le premier janvier , j'ai bien envie de te dire que j'en sais rien ^^ . Ca à sans doute une raison historique au projet pour lequel je l'avait fait , mais me souviens plus pourquoi
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 08h33   #8
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

Citation:
Envoyé par grunk Voir le message
Dans le code la pentecote est à +50 car c'est le lundi qui est férié alors que easter_day retourne le dimanche tout comme la pantecote qui est un dimanche.
Sans chercher à déclencher une polémique, je trouve "choquant" que la classe retourne "non férié" si je teste la date de Pâques ou de la Pentecôte.
Cela dit, si ça ne me conviens pas, il faut 30 secondes pour ajouter ces 2 jours...

@+
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 08h38   #9
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Citation:
Sans chercher à déclencher une polémique, je trouve "choquant" que la classe retourne "non férié" si je teste la date de Pâques ou de la Pentecôte.
Comme je l'ai dit la classe avait pour but d'afficher les jours non travaillés sur un calendrier. Les dimanches étant forcément chômés (dans mon cas) c'est les lundi qui m'intéressait

Après ce n'est qu'une proposition et comme tu le précises il est très simple de réadapter si on veux les dates exactes
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h39.


 
 
 
 
Partenaires

Hébergement Web