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

Langage PHP Discussion :

[Dates] Le nombre de jours écoulés entre deux dates


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 90
    Points : 53
    Points
    53
    Par défaut [Dates] Le nombre de jours écoulés entre deux dates
    Kerod a publié une fonction dans la FAQ mais j'ai un problème...

    Pour faire la différence entre deux dates, il faut utiliser les fonctions suivantes :

    * explode() qui permettra de récuperer le jour, le mois et l'année.
    * mktime() qui nous donnera le timestamp pour effectuer les calculs.

    Pour obtenir le nombre de jours ou le nombre de semaines entre deux dates, il faut donc procéder comme ceci :


    //Définition des date au format jour-mois-année
    $date1 = "12-07-2003";
    $date2 = "15-06-2003";

    //Extraction des données
    list($jour1, $mois1, $annee1) = explode('-', $date1);
    list($jour2, $mois2, $annee2) = explode('-', $date2);

    //Calcul des timestamp
    $timestamp1 = mktime(0,0,0,$mois1,$jour1,$annee1);
    $timestamp2 = mktime(0,0,0,$mois2,$jour2,$annee2);
    echo abs($timestamp2 - $timestamp1)/86400; //Affichage du nombre de jour : 27
    echo abs($timestamp2 - $timestamp1)/(86400*7); //Affichage du nombre de semaine : 3.85


    On utilise abs afin d'obtenir toujours une valeur positive, donc les dates peuvent être mises dans n'importe quel ordre.
    Mon soucis c'est que si date1 = '25-03-2007' et date2='27-03-2007'

    A cause du changement d'heure, le nombre de jour ne tombe pas juste....
    Au niveau compta, c'est pas possible pour moi. C'est la misère à gérer.
    Personne n'a été confronté au problème ?

    Merci.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Points : 1 357
    Points
    1 357
    Par défaut
    Bonjour,

    Modifie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $decallage = 0;
    if ((date('I', $timestamp1) == 0) && (date('I', $timestamp2) == 1))
    	$decallage = 3600;
    elseif ((date('I', $timestamp1) == 1) && (date('I', $timestamp2) == 0))
    	$decallage = -3600;
     
    echo abs($timestamp2 - $timestamp1 + $decallage)/86400 . '<br>'; //Affichage du nombre de jour : 27
    echo abs($timestamp2 - $timestamp1 + $decallage)/(86400*7); //Affichage du nombre de semaine : 3.85
    A adapter car je n'ai pas testé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 16/12/2009, 14h10
  2. Nombre de jours ouvrables entre deux dates
    Par lenny_ dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 27/10/2006, 12h13
  3. Réponses: 1
    Dernier message: 10/08/2006, 14h43
  4. Compter le nombre de jours écoulés entre deux dates
    Par koKoTis dans le forum VBScript
    Réponses: 8
    Dernier message: 07/08/2006, 19h44

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