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 :

timestamp selon heure locale


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut timestamp selon heure locale
    Bonjour

    J'ai besoin d'une variable de référence qui est la date du jour (de connexion) à minuit, et qui doit répondre aux besoins suivants :
    - stockée dans une $_SESSION
    - pouvoir ensuite facilement ajouter/retrancher des jours et des heures en php
    - pouvoir la reconvertir en date (string) en javascript

    Je suis parti sur un timestamp obtenu avec strtotime ou mktime... Mais le problème est que le fuseau horaire n'est pas pris en compte, et dans les valeurs suivantes aujourd'hui n'est plus aujourd'hui entre 00:00 et 01:00/02:00 (hiver/été, en France)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    strtotime('today')
    strtotime('today midnight')
    strtotime(date("Ymd"))
    strtotime(date('Y') . date('m') . date('d'))
    mktime(0, 0, 0)
    mktime(0, 0, 0, date('m'), date('d'), date('Y'))
    En fonction de ces besoins quelle option utiliseriez vous ?
    En vous remerciant par avance.

  2. #2
    Membre Expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 722
    Par défaut
    La fonction date ne se limite pas aux paramètres année, mois et jour, elle possède tout un ensemble d'argument assez poussé dont un certain nombre concerne le fuseau horaire et l'heure d'été-hiver. Il y a moyen d'obtenir ce que tu souhaites en jouant sur l'ensemble de ces paramètres.

    Néanmoins, cela peut assez vite devenir assez lourd à gérer et à maintenir (avec des mktime/date/strtotime avec des paramètres à rallonge, imbriquées un peu dans tous les sens), c'est là que la classe DateTime arrive à la rescousse, elle est la représentation objet du temps en php et permet de gérer et de représenter tout ça un peu plus facilement.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut
    D'accord merci.
    C'est donc éventuellement date() qu'il faut paramétrer, ce qui exclut strtotime('today')...

    J'avais aussi vu passer la classe DateTime qui a effectivement l'air d'être plus pratique, mais je me demandais juste si elle n'était pas un peu trop récente (pour les hébergeurs), si on pouvait stocker cette chose dans une $_SESSION, et si on pouvait la renvoyer au javascript ?

  4. #4
    Membre Expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 722
    Par défaut
    A noter l'importance de définir un fuseau horaire par défaut pour toutes les dates (paramètre date.timezone du php.ini, fonction date_default_timezone_set pour en définir un à l'exécution).

    Ainsi strtotime('today') affecte l'heure à minuit pour le fuseau horaire définie (pas forcément par rapport à Greenwich).

    J'avais aussi vu passer la classe DateTime qui a effectivement l'air d'être plus pratique, mais je me demandais juste si elle n'était pas un peu trop récente (pour les hébergeurs), si on pouvait stocker cette chose dans une $_SESSION, et si on pouvait la renvoyer au javascript ?
    La classe DateTime peut-être utilisé à partir de la version 5.2 de php. A toi de voir si le serveur possède au moins cette version, normalement ça devrait pas poser de problème.

    Et oui il y aura moyen de passer sa valeur à javascript.

    Ah et oui pour info "cette chose" s'appelle un objet

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 155
    Par défaut
    Ok, donc si les visiteurs sont dans 1 seul fuseau horaire alors strtotime('today') ferait l'affaire après paramétrage du date.timezone ..

    Bon, cela dit je vais peut-être essayer d'opter pour le progrès (pour cet objet donc).

    Merci bien pour tes réponses.

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

Discussions similaires

  1. Calcul heure UCT par rapport à heure locale
    Par bobic dans le forum Oracle
    Réponses: 1
    Dernier message: 11/05/2006, 22h45
  2. Regler heure locale du serveur
    Par sirbaldur dans le forum Langage
    Réponses: 1
    Dernier message: 06/02/2006, 16h36
  3. Afficher des heures locales
    Par mrpowerboy dans le forum Applets
    Réponses: 3
    Dernier message: 27/09/2005, 17h57
  4. Conversion d'heures de GMT en Heure locale
    Par speedy1496 dans le forum Oracle
    Réponses: 7
    Dernier message: 25/07/2005, 16h59
  5. heure locale et GMT
    Par Dauphin dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/06/2005, 06h51

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