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 :

définir un timezone en fonction du choix de l'utilisateur


Sujet :

Langage PHP

  1. #21
    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
    Citation Envoyé par monlou Voir le message
    Oui, ca me parait une bonne idée d'associer ces villes dans ma table a un décalage horaire par rapport à UTC!
    Il ne s'agit pas d'associer les villes à un décalage horaire, mais à un "timezone", car il y a les heures d'été et le décalage change.

    Citation Envoyé par monlou Voir le message
    tu peux aller voir ici et voir ou imprimer la carte des fuseaux horaire du canada,

    http://http://atlas.nrcan.gc.ca/auth...onal/timezones

    il y en a 5 comme les USA d'ailleurs puisque les lignes de démarcation viennent du pole Nord et descendent le sud
    Un problème sur ton lien, mais on trouve quand même.
    Cela dit, il est précisé sur ce site qu'il y a 6 fuseaux horaires.

    Citation Envoyé par monlou Voir le message
    Oui, j'ai été voir rapidement ton lien , disons qu'il ya plusieurs fichiers a consulter mais j'y retourne voir encore!
    Peut-être trop rapidement, car il n'y a que 2 fichiers à consulter, voire à télécharger.

    Citation Envoyé par monlou Voir le message
    je me demande maintenant la!
    quelle serait la meilleure façon d'adapter ce que j'ai dans ma table villes
    Fait voir la structure de ta table "villes". Combien contient-elle de lignes ?

  2. #22
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    jeca - Il ne s'agit pas d'associer les villes à un décalage horaire, mais à un "timezone", car il y a les heures d'été et le décalage change.
    oui, ca me parait bcp plus logique effectivement!

    Un problème sur ton lien, mais on trouve quand même.
    Cela dit, il est précisé sur ce site qu'il y a 6 fuseaux horaires.
    oui, si on ajoute l'Alaska (USA) , mais je n'y avais pas encore songé jusqu'ici.
    ca serait aussi plus logique!!!

    la structure de ma table


    table villes:
    id, nom, province_id, pays_id
    600 enregistrements.

  3. #23
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    Je serais étonné qu'il y ait des décalages horaires entre 2 villes d'un même Etats par exemple.
    ca peut arriver!
    Pour une même province (ou Etat) ???
    Tabarnak ... Y sont fous ces Canadiens
    (je déconne)
    Ils auraient pu simplifier quand même.


    Peut être faudrait il avoir une table "timezone" avec les différents timezone (6 en tout apparemment).
    Au minimum 2 champs genre : timezone_id | timezone_name
    Rien t'empêche de créer d'autres champs pour ajouter des infos complémentaires.

    Ensuite, suffirait normalement de les lier aux villes, avec le "timezone_id" adéquat.


    J'en suis pas certain par contre, faudrait à mon avis vérifier ça avec Php, repérer les différents timezone qu'il y a te concernant.
    Avec ceci ça devrait le faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    echo '<pre>';
    print_r(DateTimeZone::listIdentifiers(DateTimeZone::AMERICA)); // Ou DateTimeZone::ALL
    echo '</pre>';
    La logique voudrait qu'il y ait les 6 timezone en question, ni plus ni moins je dirais même.

    Mais prospecter la classe DateTimeZone serait utile, car elle fournie pas mal d'info, méthodes getLocation(), getTransitions(), listAbbreviations(), listIdentifiers()
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $montreal = new DateTimeZone('America/Montreal');
     
    echo $montreal->getName().'<br />';
    echo '<pre>';
    print_r($montreal->getLocation());
    print_r($montreal->getTransitions());
    echo '</pre>';

  4. #24
    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,

    Plus je regarde ce sujet, moins je dors :
    • coucher : 23:30 (fuseau Europe/Paris)
    • lever : 01:30 (fuseau Europe/Paris)

    Après avoir relu tous les messages de ce sujet, je me dis qu'on est en train d'(suivre le lien).

    RunCodePhp a donné la solution au problème posé :
    Citation Envoyé par RunCodePhp Voir le message
    Si on prend les billets d'avions par exemple, les heures indiquées sont toujours celles de l'heure locale.
    A aucun moment le décalage horaire n'a besoin d'être utilisé dans cette application :
    • utilisateur voiturier : lorsqu'il va proposer un trajet, il est évident qu'il va saisir les date et heure locales du lieu de départ ;
    • utilisateur passager : il va faire une recherche sur une destination, et lui seront donc proposés les date et heure locales du lieu de départ. Et il faudrait que ce soit un sacré vicieux pour chercher une destination au départ d'un autre fuseau horaire. Exemple : je suis à Paris et je cherche à aller à Bruxelles au départ de Londres. Quelle marrade (cf. pub Peugeot).

    Voilà le résultat de mes élucubrations nocturnes. Je vais pouvoir remettre la viande dans le torchon (cf. Mme Groseille dans La vie est un long fleuve tranquille).

    Il est environ 03:30 (fuseau Europe/Paris), je suis donc debout depuis environ 2 heures. Si je fais ça le 31, je ne serai légalement resté debout qu'une heure. Étonnant, non ? (cf. Pierre Desproges dans La minute nécessaire de Mr Cyclopède).

  5. #25
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    RunCodePhp Mais prospecter la classe DateTimeZone serait utile, car elle fournie pas mal d'info, méthodes getLocation(), getTransitions(), listAbbreviations(), listIdentifiers()
    merci pour les infos
    j'ai été voir ces fonctions et ces classes sur timezone,
    en fait, ces timezone sont toujours nommés en rapport avec un continent et une ville, donc
    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print_r(DateTimeZone::listIdentifiers(DateTimeZone::AMERICA))
    j'obtiens une liste de 137 entrées pour 6 fuseaux horaires

    Comment nommer le time zone qui représente disons Montreal ou celui de Edmonton?

    a part les nommer disons
    DateTimeZone('America/Edmonton') = utc-7
    DateTimeZone('America/Montreal') = utc -5


    Jeca - A aucun moment le décalage horaire n'a besoin d'être utilisé dans cette application :

    * utilisateur voiturier : lorsqu'il va proposer un trajet, il est évident qu'il va saisir les date et heure locales du lieu de départ ;
    * utilisateur passager : il va faire une recherche sur une destination, et lui seront donc proposés les date et heure locales du lieu de départ. Et il faudrait que ce soit un sacré vicieux pour chercher une destination au départ d'un autre fuseau horaire. Exemple : je suis à Paris et je cherche à aller à Bruxelles au départ de Londres. Quelle marrade (cf. pub Peugeot).

    je suis tout a fait d'accord mais l'utilisateur devrait être informé de cette procédure de quelque facon par le site


    alors, je devrais commencer par créer une table timezone avec timezone_id
    et timezone name comme principaux champs

    associer les 600 entrées de la table villes avec le id du timezone approprié.

    et après, quand on voudra afficher date_depart et heure_depart sur le tableau des départs, on pourra se servir du timezone approprié pour afficher la date,

    alors, sauf erreur de ma part, il ne sera pas nécessaire de définir le timezone sur toute la page ou sur tout le site en rapport avec le pc de l'utilisateur.... mais peut-etre que je dérape ici la!!

    EUH!! j'y pense! les champs 'date_depart' et 'heure_depart' n'auront besoin d'aucune modification pour l'affichage au tableau puisque le voiturier entre toujours l'heure du fuseau horaire du lieu de départ!!


    --

  6. #26
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    EUH!! j'y pense! les champs 'date_depart' et 'heure_depart' n'auront besoin d'aucune modification pour l'affichage au tableau puisque le voiturier entre toujours l'heure du fuseau horaire du lieu de départ!!
    C'est ce que je me tue as dire depuis le début

    Mais ce que sous entend peut être Jeca, que toute la démagogie qu'à été faite sur la question jusqu'à lors à finalement du bon, ça a permis de mettre pas mal à plat les choses sur ces histoires des tranches horaires.

    A un moment faut savoir trancher aussi, non ?
    C'est à toi maintenant de savoir ce que tu veux faire avec l'heure que saisira les utilisateurs.
    Et il n'y en a pas 36, j'en vois que 2 :
    - Soit tu l'enregistre tel quel.
    - Soit tu retire le décalage horaire pour obtenir au final (enregistrer) l'heure UTC.

    Ne vois tu pas comment les choses peuvent se faire ? (hormis l'aspect technique pure).

  7. #27
    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
    Citation Envoyé par RunCodePhp Voir le message
    C'est ce que je me tue as dire depuis le début

    Mais ce que sous entend peut être Jeca, que toute la démagogie qu'à été faite sur la question jusqu'à lors à finalement du bon, ça a permis de mettre pas mal à plat les choses sur ces histoires des tranches horaires.

    A un moment faut savoir trancher aussi, non ?
    C'est à toi maintenant de savoir ce que tu veux faire avec l'heure que saisira les utilisateurs.
    Et il n'y en a pas 36, j'en vois que 2 :
    - Soit tu l'enregistre tel quel.
    - Soit tu retire le décalage horaire pour obtenir au final (enregistrer) l'heure UTC.

    Ne vois tu pas comment les choses peuvent se faire ? (hormis l'aspect technique pure).
    Ceci peut être considéré comme le mot de la fin, non ?

  8. #28
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    Mais ce que sous entend peut être Jeca, que toute la démagogie qu'à été faite sur la question jusqu'à lors à finalement du bon, ça a permis de mettre pas mal à plat les choses sur ces histoires des tranches horaires.
    oui! et en plus quand a moi je vais rajouter une expression francaise de plus a mon répertoire. celle de jeca en rapport avec son lien!

    jeca, avec tout mes remerciements pour ta participation et te souhaitant maintenant un peu plus de repos dans le fuseau horaire de ton choix!

    RunCodePhp- C'est à toi maintenant de savoir ce que tu veux faire avec l'heure que saisira les utilisateurs.
    Et il n'y en a pas 36, j'en vois que 2 :
    - Soit tu l'enregistre tel quel.
    - Soit tu retire le décalage horaire pour obtenir au final (enregistrer) l'heure UTC.
    je crois ici que je suis tenté par la formule 'KISS' (Keep it it simple)

    je vais l'enregistrer tel quel . En quoi ca me procurerais un avantage que d'enregistrer le fuseau horaire et ensuite remettre l'heure dans le fuseau horaire du pc de l'utilisateur?

    merci a toi aussi RunCodePhp

  9. #29
    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
    Points : 3 947
    Points
    3 947
    Par défaut
    je crois ici que je suis tenté par la formule 'KISS' (Keep it it simple)
    C'est aussi mon avis.

    En quoi ca me procurerais un avantage que d'enregistrer le fuseau horaire et ensuite remettre l'heure dans le fuseau horaire du pc de l'utilisateur?
    Là par contre, à mon sens faut que tu oubli cette histoire d'heure du pc des utilisateurs, c'est un vrai faux problème.

    Par contre, rien t'empêche de créer cette table "timezone", (timezone_id, timezone_name) et d'enregistrer les 5 ou 6 fuseaux horaire.
    Puis de créer un nouveau champ "timezone_id" dans la table "villes", et enregistrer pour chaque ville l'ID du timezone_id correspondant.

    Si un jour tu as besoin de manipuler ces date en rapport au fuseau horaire, ça pourra se faire quasi illico presto.

    Où tout simplement afficher le décalage horaire de la ville sélectionnée, ne serait-ce pour info/rappel pour les utilisateurs.
    Si tu exploite la classe dateTime, ça peu se faire très simplement, à condition que les noms dans le champ "timezone_name" correspondent, comme :
    America/Edmonton
    America/Montreal

  10. #30
    Membre habitué Avatar de monlou
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2010
    Messages : 363
    Points : 144
    Points
    144
    Par défaut
    merci pour toutes ces infos supplémentaires RunCodePhp.

    oui, je crois que des infos supplémentaires comme le Timezone pourra etre utile sur ce site , alors, je prends note de tes suggestions afin de le compter au menu d' une prochaine amélioration!!

  11. #31
    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
    Citation Envoyé par monlou Voir le message
    jeca, avec tout mes remerciements pour ta participation et te souhaitant maintenant un peu plus de repos dans le fuseau horaire de ton choix!
    Bien que ce ne soit pas mon choix, je m'approche de plus en plus du fuseau horaire "international/éternité".

    Quant à une table "ville" avec les timezones, je t'ai donné un lien quelques messages plus avant. Je l'ai moulinée vite fait, et voici un échantillon de son contenu :
    0;Airdrie;51.30011;-114.03528;PPL;CA;;America/Edmonton
    0;"Air Ronge";55.08343;-105.31763;PPL;CA;;America/Regina
    0;Ajax;43.85012;-79.03288;PPL;CA;;America/Toronto
    0;Akulivik;60.80056;-78.19935;PPL;CA;;America/Montreal
    0;Alameda;49.26675;-102.2842;PPL;CA;;America/Regina
    0;Albanel;48.88324;-72.44867;PPL;CA;;America/Montreal
    0;"Alberta Beach";53.66684;-114.35208;PPL;CA;;America/Edmonton
    0;Alberton;46.81685;-64.06542;PPL;CA;;America/Halifax
    0;Albertville;53.40009;-105.55099;PPL;CA;;America/Regina
    0;Albury;44.08342;-77.51618;PPL;CA;;America/Toronto
    0;"Alert Bay";50.58293;-126.91979;PPL;CA;;America/Vancouver
    0;Alexandra;46.19592;-63.03058;PPL;CA;;America/Halifax
    0;"Alice Beach";50.93338;-105.16784;PPL;CA;;America/Regina
    0;Alida;49.38334;-101.86761;PPL;CA;;America/Regina
    0;Alix;52.40012;-113.18525;PPL;CA;;America/Edmonton
    0;Allan;51.88337;-106.0679;PPL;CA;;America/Regina
    0;Alleyn-et-Cawood;45.91681;-76.23268;PPL;CA;;America/Montreal
    0;Alliance;52.43345;-111.78503;PPL;CA;;America/Edmonton
    0;Alma;45.65186;-64.92377;PPL;CA;;America/Moncton
    0;Alma;48.55009;-71.6491;PPL;CA;;America/Montreal
    Cela reste à peaufiner. Si tu la veut complète, donne moi ton email en message privé, je te l'enverrais en pièce jointe, et éventuellement le bout de programme que j'ai utilisé.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Comment afficher un résultat en fonction du choix de l'utilisateur
    Par MInfo25 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 24/04/2014, 21h09
  2. Réponses: 9
    Dernier message: 28/01/2009, 17h00
  3. Afficher un nombre de balise div en fonction du choix de l'utilisateur
    Par Analfabete dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 11/01/2007, 18h49
  4. Changer de feuille de style en fonction du choix de l'utilisateur
    Par Jim_Nastiq dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/08/2006, 10h52

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