IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez / Téléchargez Sources et Outils PHP Discussion :

Conseil pour functions date [Sources]


Sujet :

Contribuez / Téléchargez Sources et Outils PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    691
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 691
    Points : 362
    Points
    362
    Par défaut Conseil pour functions date
    Bonjour voila j'ai créer un fichier de fonction sur les dates qui peut être fort utile.

    J'aimerais avoir vos commentaires et vos améliorations.
    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
     
    function frenchdate($date){
       $temp = explode("-",$date);
       $res = $temp[2]."/".$temp[1]."/".$temp[0];
       return($res);
    }
     
    function jourFerie($date){
    	$d = explode('-',$date);
    	$annee = $d[0];
    	$mois = $d[1];
    	$jour = $d[2];
     
    	if($mois=="01" && $jour=="01") return(true); // Premier de l'an
        if($jour=="01" && $mois=="05") return(true); // Fete du travail
        if($jour=="08" && $mois=="05") return(true); // victoire 1945
        if($jour=="14" && $mois=="07") return(true); // 14 Juillet
        if($jour=="15" && $mois=="08") return(true); // Assomption
        if($jour=="01" && $mois=="11") return(true); // Toussaint
        if($jour=="11" && $mois=="11") return(true); // Armistice 1918
        if($jour=="25" && $mois=="12") return(true); // Noel
        $paques = explode('-',date("Y-m-d",easter_date($annee)));
        $Lpaques = date("Ymd",mktime(0, 0, 0, $paques[1]  , $paques[2]+1, $paques[0]));
        if($Lpaques==$annee.$mois.$jour) return(true); // Paques    
     
        $pentecote=@getdate(@mktime(0,0,0,$paques[1],$paques[2]+49,$paques[0]));
        for($i=0; $pentecote['wday']!=0 &&$i<7; $i++)
        	$pentecote=@getdate(@mktime(0,0,0,$pentecote['mon'],$pentecote['mday']+$i,$pentecote['year']));
     
        //Lundi de Pentecote
        $Lpentecote=@getdate(@mktime(0,0,0,$pentecote['mon'],$pentecote['mday']+1,$pentecote['year']));
        if($d['mday']==$Lpentecote['mday'] && $d['mon']==$Lpentecote['mon']) 
        	return(true);
     
        //Ascension = pentecote -10j
        $ascension=@getdate(@mktime(0,0,0,$pentecote['mon'],$pentecote['mday']-10,$pentecote['year']));
        if($d['mday']==$ascension['mday'] && $d['mon']==$ascension['mon']) 
        	return(true);
     
        else 
        	return(false);	
    }
     
    function workDay($date){
    	return(!jourFerie($date) && !isWEForDateAn($date));
    }
     
    //-------------------------------------------------------------------------------------------------
    //------------------------------------- Changement Date -------------------------------------------
    //-------------------------------------------------------------------------------------------------
    function changeDateAll($an,$mois,$jour,$date){
       if($date == null){
    		$date = date("Y-m-d");
    	}
       $temp = explode("-",$date);
       return(date("Y-m-d",mktime(0, 0, 0, $temp[1]+($mois)  , $temp[2]+($jour), $temp[0]+($an))));
    }
     
    function changeDateJour($decalage,$date){
    	if($date == null){
    		$date = date("Y-m-d");
    	}
    	$temp = explode("-",$date);
    	return(date("Y-m-d",mktime(0, 0, 0, $temp[1]  , $temp[2]+($decalage), $temp[0])));
    }
     
    function changeDateMois($decalage,$date){
    	if($date == null){
    		$date = date("Y-m-d");
    	}
    	$temp = explode("-",$date);
    	return(date("Y-m-d",mktime(0, 0, 0, $temp[1]+($decalage)  , $temp[2], $temp[0])));
    }
     
    function changeDateAn($decalage,$date){
    	if($date == null){
    		$date = date("Y-m-d");
    	}
    	$temp = explode("-",$date);
    	return(date("Y-m-d",mktime(0, 0, 0, $temp[1]  , $temp[2], $temp[0]+($decalage))));
    }
     
     
    //-------------------------------------------------------------------------------------------------
    //--------------------------------------- Semaine -------------------------------------------------
    //-------------------------------------------------------------------------------------------------
    function numJourFr($jour,$mois,$an){
    	return(date("N",mktime(0,0,0,$mois,$jour,$an)));
    }
     
    function numJourAn($jour,$mois,$an){
    	return(date("w",mktime(0,0,0,$mois,$jour,$an)));
    }
     
    function isWEForNumJourFr($numjour){
    	if($numjour == 6 || $numjour == 7)
    		return(true);
    	else
    		return(false);
    }
     
    function isWEForDateAn($date){
    	$temp = explode("-",$date);
    	$numjour = numJourFr($temp[2],$temp[1],$temp[0]);
    	return(isWEForNumJourFR($numjour));
    }
     
     
    //-------------------------------------------------------------------------------------------------
    //------------------------------------------ Mois -------------------------------------------------
    //-------------------------------------------------------------------------------------------------
    function jourInMonth($date){
    	if($date == null){
    		$date = date("Y-m-d");
    	}
    	$temp = explode("-",$date);
    	return(date("t",mktime(0,0,0,$temp[1],$temp[2],$temp[0])));
    }
     
    function jourTravailleMois($date){
    	$workday = 0;
    	$temp = explode("-",$date);
    	$nbjourinmonth = jourInMonth($date);
    	$startDate = $temp[0]."-".$temp[1]."-01";
     
    	echo 'start date : '.$startDate.'<br />';
     
    	if(workDay($startDate))
    		$workday++;
     
    	for($i=1; $i<$nbjourinmonth; $i++){
    		if(workDay(changeDateJour($i,$startDate)))
    			$workday++;	
    	}
    	return($workday);
    }

  2. #2
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Ca parrait bien, 'est en PHP4 ?

    Si c'est en 5, je te conseil de changer tout ca dans une classe, statique à la limite, comme ca tu peux t'en servir comme "réservoir" de filtres....

    PS : il me semble que pour les jours fériés et tout ca, mktime ou date a des fonctionnalités poussés, en passant en paramètre le pays, non ?

    A vérifier dans la documentation, je suis sur d'avoir vu un truc comme ca....
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    +1 pour la classe statique en PHP 5

    Sinon peux-tu fournir quelques exemples pour chaque fonction ? Cela facilitera leur utilisation et leur adoption

  4. #4
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    J'ai une classe statique pour mes applis que j'appelle "Filtre", dans laquelle je met toute mes méthodes de conversions...

    C'est super pratique

    PS : pour tes gestions de dates, je te conseil de rajouter une au deux fonctions AVEC les heures et minutes...
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985

  6. #6
    Membre éprouvé
    Avatar de viviboss
    Profil pro
    Inscrit en
    Août 2006
    Messages
    943
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Août 2006
    Messages : 943
    Points : 1 248
    Points
    1 248
    Par défaut
    Ouaé, la coupure brutale du sujet...

    Bon, c'est vrai qu'on est parti hors sujet sur le coup, mais sur un sujet tout aussi intéressant....
    Veni Vidi Vici
    -------------------------
    Mes articles : developpez.com ou bien vbview.net
    -------------------------
    Et SURTOUT ne pas oublier la bible PHP : --> php_manual_fr.chm!!!
    Et aussi : --> pear_manual_fr.chm!!!

    Ou encore : --> Les tutoriaux & cours PHP de Développez.com
    -------------------------

  7. #7
    Membre régulier Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function frensh_date($date) // exemple $date 02/07/2007
    {
    	setlocale(LC_ALL, 'fr');
     
    	$my_date=split('/', $date);
     
    	return strftime("%d %B %Y", mktime(0, 0, 0, $my_date[1], $my_date[0], $my_date[2]));
     
    }
    Si c'est en 5, je te conseil de changer tout ca dans une classe, statique à la limite,
    pour quoi une class static et pas un autre type de class ?

    merci

  8. #8
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Citation Envoyé par Yogui
    cf. ce sujet pour la réponse à ta question


  9. #9
    Membre régulier Avatar de fadex
    Inscrit en
    Septembre 2005
    Messages
    223
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 223
    Points : 105
    Points
    105
    Par défaut
    thinks yogi

Discussions similaires

  1. Conseil pour insertion de date
    Par vete25 dans le forum Modélisation
    Réponses: 15
    Dernier message: 26/05/2013, 09h38
  2. Conseil pour des dates
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/05/2007, 19h24
  3. [Dates] Besoin de conseil pour une date
    Par Dargos dans le forum Langage
    Réponses: 6
    Dernier message: 19/07/2006, 11h59
  4. Réponses: 3
    Dernier message: 14/04/2006, 14h33
  5. [web] Cherche un conseil pour un livre perl-tk
    Par Anonymous dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 29/04/2002, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo