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 :

Changement de fuseau horaire [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut Changement de fuseau horaire
    Bonsoir,

    Savez vous si on peut convertir facilement une date associée à une localisation (fuseau horaire) en une nouvelle date associée à une nouvelle localisation.

    Exemple
    date1= "10/05/2010 10:00:00" associée à "Europe/Paris"
    Je voudrais obtenir la date2 associée à "America/Los Angeles" (exemple).

    On dit que PHP gère seul et automatiquement les fuseaux et localisation.
    Je ne sais comment faire.

    J'ai essayé le code ci dessous où $date1 est la date associée au fuseau
    courant et $date2 la date associée au fuseau contenu dans la variable $nom_fuseau. Cela ne fonctionne pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $date2 = new DateTime($date1,new DateTimeZone($nom_fuseau));
    Si vous savez, merci de nous en faire profiter.


  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Ton problème doit être lié au fait que tu demande une date qui comporte l'heure : "10/05/2010 10:00:00".
    S'il y a l'heure, il ne peu pas avoir de décalage horaire.
    Enfin je pense.

    De plus, je ne suis pas certain qu'il soit possible d'avoir un décalage horaire sur une date antérieur que maintenant, qu'à cet instant même.
    Faut voir.

    Il faudrait ne pas renseigner une date/heure précise dans le 1er paramètre, mais la chaine "now", donc au moment même.
    A cette instant même il y aura un décalage horaire selon 2 zones géographique, comme Europe et America.

  3. #3
    Membre confirmé Avatar de alain78
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2008
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 160
    Par défaut On progresse
    Voici le résultat de mes dernières recherches.
    Précision importante : je suis sous PHP 5.2.9 (la version 5.3 solutionne tout avec la classe DateTime enfin je crois). Bien sûr je ne puis passer sous 5.3 (hébergement mutualisé oblige).

    A partir d'une date/heure donnée sous le fuseau Europa/Paris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $date_init="2010-05-12 17:45:00";
    J'obtiens bien une date/heure dans un autre fuseau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $fuseau='America/Los_Angeles';
    $date = new DateTime($date_init, new DateTimeZone($fuseau));
    Le résultat affiché après application du format ('d-m-Y H:i:s P') sont
    $date = 12-05-2010 17:45:00 -07:00

    On note que le résultat n'affiche que la différence horaire entre les 2 fuseaux.

    Or, je voudrais afficher une nouvelle date ($date2) qui serait égale à $date_init augmentée de la différence horaire entre les 2 fuseaux. Le format attendu est (d-m-Y H:i:s)

    Je ne trouve pas la solution (sous PHP 5.2.9).
    En connaissez vous une ?

    A suivre....
    MErci

  4. #4
    Membre Expert Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Par défaut
    pour utiliser les dates et les fuseaux horaires en PHP, c'est plus pratique de travailler avec des timestamps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $date = 1273679100; // timestamp de 12/05/2010 17:45:00 GMT+2
     
    date_default_timezone_set('America/Los_Angeles');
    echo date('d-m-Y H:i:s P', $date) . '<br/>'; // affiche 12-05-2010 08:45:00 -07:00
     
    date_default_timezone_set('Europe/Paris');
    echo date('d-m-Y H:i:s P', $date) . '<br/>'; // affiche 12-05-2010 17:45:00 +02:00
    pour calculer les timestamp, regarde la fonction http://php.net/mktime

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

Discussions similaires

  1. changement du fuseau horaire d'un serveur
    Par tribalnanasss dans le forum MySQL
    Réponses: 5
    Dernier message: 17/08/2010, 18h07
  2. Fonction pour calculer un changement fuseau horaire
    Par SiX-P4cK dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 27/02/2009, 11h33
  3. Réponses: 2
    Dernier message: 26/10/2008, 07h34
  4. Date - fuseau horaire
    Par sparton dans le forum Collection et Stream
    Réponses: 16
    Dernier message: 11/01/2006, 15h46

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