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 :

Différence de temps (dates et heures)


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Par défaut Différence de temps (dates et heures)
    Salut,
    J'ai cherché un peu partout, j'ai trouvé des pages répondant à mon problème, mais j'ai pas trouvé d'explication assez clair pour m'aider...

    Mon problème est simple : J'ai deux dates distinctes (complètes, avec jours, mois, années, heures, minutes et secondes), et j'aimerais savoir combien de secondes se sont écoulées entre les deux.
    Je peux mettre ces dates dans n'importe quel format, avec séparateurs ou non, ça ne pose aucun problème.

    Maintenant j'aimerais savoir : existe-il une fonction ou une marche à suivre, qui me permettent simplement de récupérer le nombre de secondes écoulées entre ces deux dates, sous forme d'entier ?

    J'ai trouvé des trucs au niveau des fonctions time et mktime, mais je n'ai pas réussi à les utiliser...

    Dans l'attente d'une aide précieuse,
    merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    $d1 =  mktime(0, 0, 0, 7, 1, 2000);
    $d2 =  mktime(0, 0, 0, 7, 1, 2001);
    echo $d2 ;
    echo '<br/>';
    echo $d1;
    echo '<br/>';
    echo $d2 - $d1;
    echo '<br/>';
    echo (365*12*30*24*60*60)/360;
    echo '<br/>';
    ?>
    et qui nous donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo 365*24*60*60;
    echo '<br/>';
    365 jours de 24 h de 60 mn et 60 s, soit une année complète en seconde

  3. #3
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Bonsoir,

    tu peux aussi faire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
    $start   = new DateTime('2012-01-01 00:00:00');
    $end     = new DateTime('2012-01-27 22:12:45');
    $diff    = $end->diff($start);
    $seconds = ($diff->format('%a') * 86400) + ($diff->h * 3600) + ($diff->i * 60) + $diff->s;
     
    ?>

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    moi je pensais que mktime, qui calcule le nombre de seconde passé depuis le
    1er Janvier 1970 00:00:00 GMT était fiable.. puis en refaire une date, une période etc...

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Citation Envoyé par ascito Voir le message
    moi je pensais que mktime, qui calcule le nombre de seconde passé depuis le
    1er Janvier 1970 00:00:00 GMT était fiable.. puis en refaire une date, une période etc...
    il l'est pas de soucis, c'est juste qu'en fonction des versions de php, le paramétrage de la fonction a évolué.
    J'ai juste pris l'habitude de travailler avec DateTime(), c'est tout

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    ce serait mentir que de dire je ne n'utilise pas aussi cela, voilou

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Par défaut
    Tout d'abord, merci pour vos réponses

    Je ne comprends pas pas vraiment ces deux codes... Si il faut multiplier chacun des membres, à quoi sert la DateTime et mktime ?
    De plus, dans "(365*12*30*24*60*60)/360;", 30 semble être le nombre de jour dans un mois. Que se passera t'il à la fin d'un mois de 31 jours ou d'un mois de février ?
    Je ne suis pas un adepte des codes tout fait, j'aimerais comprendre comment ils fonctionnent... pourriez-vous me les expliquer ?

    Merci d'avance

  8. #8
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    C’était juste pour te montrer que mktime

    mktime() retourne un timestamp UNIX correspondant aux arguments fournis. Ce timestamp est un entier long, contenant le nombre de secondes entre le début de l'époque UNIX (1er Janvier 1970 00:00:00 GMT) et le temps spécifié .
    la soustraction de deux mktime donne donc le temps en seconde passé entre deux date, ce que tu cherches.

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Juin 2007
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 748
    Par défaut
    Pour aller plus loin que 1970 ,en fait il suffit d'ajouter 3600 s, pour que cela fonctionne, la date de référence 0 étant en vérité = -3600

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Par défaut
    Ah oui, donc en gros si j'ai bien compris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $d1 =  mktime(13, 45, 50, 7, 1, 2012);
    $d2 =  mktime(13, 45, 50, 8, 1, 2012);
    $diff = $d2 - $d1;
    Dans ce cas, $diff vaut le nombre de secondes dans une journée, c'est à dire 86400, c'est cela ?
    Si c'est cela, c'est exactement ce que je recherche, effectivement !

    Dernière question, simple curiosité : si je met des "0" devant les chiffres simples, en gros si je tape "mktime(13, 45, 50, 07, 01, 2012)", je suppose que cela fonctionne aussi bien ?

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 53
    Par défaut
    Bon, j'ai testé, ça a l'air de fonctionner, mais apparemment c'est un format H/M/S/M/J/A et non H/M/S/J/M/A x)

    En tout cas merci beaucoup de votre aide à tous les deux !

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

Discussions similaires

  1. Différence entre deux dates en heures
    Par Invité dans le forum Excel
    Réponses: 5
    Dernier message: 26/07/2011, 15h24
  2. [AC-2007] Requête SQL différence entre deux date en heure
    Par sarah12 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/07/2010, 20h58
  3. [Dates] Perdu avec strtotime et différence de temps
    Par skystef dans le forum Langage
    Réponses: 10
    Dernier message: 14/10/2008, 11h44
  4. [BO 6.5.1] Différence entre 2 dates en heure
    Par aurelie83 dans le forum Débuter
    Réponses: 2
    Dernier message: 30/01/2008, 13h47

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