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] Mauvais résultats sur différence d'heures


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut [Dates] Mauvais résultats sur différence d'heures
    Une question qui vous semblera surement triviale, mais moi je colle.

    Le code suivant me retourne 5 heures, alors qu'évidement, je devrais recevoir 4 heures.

    Si j'affiche la différence entre les 2 TS, et que je divise par 3600, j'obtiens bien 4 heures. Le mistère est total pour moi.

    Merci d'avance

    Thierry

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $f = strtotime("2007/10/01 12:00:00");
    $d = strtotime("2007/10/01 8:00:00");
     
    $h = $f - $d;
    echo date("H:i", $h)."<br>";

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    date( ) formate un timestamp et le localise (contrairement à gmdate( )).
    => Sûrement un pb de fuseau horaire.

  3. #3
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    C'est a peu pres ca, en gros là, ta date correspond au premier janvier 1970 a 5h du matin heure locale à la france.
    Si tu veux afficher le nombre d'heures séparant deux dates affiche directement $h/3600 et pas date(..., $h).

  4. #4
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut Bien vu
    Meri Séb

    Je vais m'endormir moins idiot ce soir. Ca marche nickel, on sent qu'il y a du vécu la dedans

    Je ne connaissais pas gmdate, je vais appronfir un peu le sujet pour comprendre pour le fuseaux horaire serait en cause?

    Thierry

  5. #5
    Membre Expert Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Par défaut
    merci koopajah, mais je ne comprends pas bien ce que tu veux dire.

    Mon problème se situe en fait pour calculer le temps écoulé entre deux variables au format time de MySQL.

    Peux tu me préciser un peu ce que tu veux dire par:
    affiche directement $h/3600

  6. #6
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    strtotime() te renvoie le nombre de secondes écoulées entre ta date et le 1er janvier 1970 à 00h. Du coup, pour connaitre le nombre d'heures séparant deux dates, tu récupères le nombre de secondes séparant ces deux dates (ca c'est ce que tu fais) et ensuite tu utilises la fonction date() pour afficher le nombre d'heures au format hh:mm et c'est la que c'est faux !

    tu as x secondes entre tes deux dates (que tu stockes dans la variable $h). Si tu veux le nombre d'heures entre ces deux dates il faut faire $h/3600.

    En utilisant la fonction date tu lui dis "dis moi a quelle date correspond le timestamp 14400 secondes (correspondant a une différence de 4 heures). PHP calcule donc quelle est la date 14400 secondes après le 01 janvier 1970 à 00h00 ca donne donc le 01 janvier 1970 a 04:00 (heure GMT). Comme on est en France et que ton php est surement configuré comme ca, il en déduit que 14400 secondes comme timestamp c'est le 01 janvier 1970 a 05:00 du matin (+1 heure par rapport à GTM (Greenwich Time)). D'où ton probleme.

    En gros, ta différence de timestamp est un nombre de secondes, c'est plus du tout un timestamp il faut donc l'afficher à la main sans utiliser une fonction de date qui n'est pas faite pour ca

  7. #7
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 376
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 376
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par koopajah Voir le message
    En gros, ta différence de timestamp est un nombre de secondes, c'est plus du tout un timestamp il faut donc l'afficher à la main sans utiliser une fonction de date qui n'est pas faite pour ca
    Exactement

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

Discussions similaires

  1. [Hibernate] Criteria sur différence entre deux dates ?
    Par Invité dans le forum Hibernate
    Réponses: 1
    Dernier message: 27/06/2007, 10h10
  2. [DATE] Différence en heure par rapport à un intervalle d'heure
    Par Katachana dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 04/06/2007, 16h08
  3. différence entre deux dates : des résultats curieux
    Par Herode dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/04/2007, 17h14
  4. Différence d'heure sur access
    Par dddodo dans le forum Access
    Réponses: 9
    Dernier message: 28/12/2006, 11h31
  5. [Dates] Calcul d'une différence entre deux heures
    Par loreleï85 dans le forum Langage
    Réponses: 12
    Dernier message: 28/06/2006, 11h43

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