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

C# Discussion :

soustraction d'heure sur fuseaux horaires différents


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut soustraction d'heure sur fuseaux horaires différents
    Bonjour,
    Actuellement en train de réaliser un sn, j'ai un petit soucis en ce qui concerne la connexion/déconnexion.

    Pour mettre à jour l'état d'une personne, mon serveur java doté d'un timer ejb vérifie toutes les 30 secondes avec une requête toute simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    update contact set etat='déconnecté' 
    where now()-lastconnectdate> interval '30 seconds;
    Le paramètre lastconnectdate est quand à lui envoyé toutes les 5 secondes dans un par chaque client .net pour bien montrer qu'il est toujours là:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     ch.updateStateUser(contactConnect.Id, DateTime.now, true);
    Tout cela marche la majeur partie du temps, mais j'ai remarqué plusieurs problèmes!!!

    Le premier: si les 2 postes qui se parlent ont une heure système différente dans windows alors ca ne fonctionne plus!!!
    Le second: si je veux gérer les fuseaux horaires différents pour parler à une personne aux etats-unis par exemple que dois-je faire? le framework peut-il détecter à l'aide d'une commande sur quel fuseau on se trouve? pouvez-vous me dire comment vous vous y prendriez si vous avez une idée?
    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par mnemonic78 Voir le message
    Le premier: si les 2 postes qui se parlent ont une heure système différente dans windows alors ca ne fonctionne plus!!!
    Le second: si je veux gérer les fuseaux horaires différents pour parler à une personne aux etats-unis par exemple que dois-je faire? le framework peut-il détecter à l'aide d'une commande sur quel fuseau on se trouve? pouvez-vous me dire comment vous vous y prendriez si vous avez une idée?
    Merci
    Utilise les méthodes DateTime.ToUniversalTime et DateTime.ToLocalTime pour convertir entre heure locale et heure UTC. Comme ça, tu peux transmettre au serveur des heures UTC, et donc le fuseau horaire du client n'a plus d'importance

  3. #3
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    ok donc de mon côté client j'envoie le dateTime.now convertie en Universal Time, puis en local Time
    comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    currentTime=DateTime.now;
    DateTime utcTime = currentTime.ToUniveralTime();
    DateTime myDate = utcTime.ToLocalTime();

    C'est censé marcher dans tous les cas?
    Car sur un site j'ai lu ça :

    Of course, this example assumes you are using the timezone of the machine
    the application lives on. If you're on the east cost and need to convert to
    pacific, you can use the Calendar Object to set the locale and pull your
    dates/times from that. Though, if you need that flexability, and are going
    to bu reusing that code, I would take the custom utility class approach.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par mnemonic78 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    currentTime=DateTime.now;
    DateTime utcTime = currentTime.ToUniveralTime();
    DateTime myDate = utcTime.ToLocalTime();
    Ben pourquoi tu convertis en UTC et tu reconvertis en local ?
    C'est comme si tu avais fait directement myDate = DateTime.Now...

  5. #5
    Membre confirmé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Par défaut
    euh lol ok, donc j'ai pas bien capté.
    donc j'ai juste à envoyer utcTime :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateTime utcTime = currentTime.ToUniveralTime();
    et de mon côté java, j'ai un traitement avant à faire pour l'utiliser dans ma requête?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    update contact set etat='déconnecté' 
    where now()-lastconnectdate> interval '30 seconds;
    lastconnectDate étant l'utcTime envoyé

Discussions similaires

  1. différence d'heure sur plage d'horaire
    Par raymonizuka dans le forum Excel
    Réponses: 7
    Dernier message: 18/06/2008, 11h16
  2. convertir des heures selon les fuseaux horaires
    Par cyrano_de_bergerac dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 27/05/2008, 11h13
  3. Même liste sur 26 pages différentes
    Par krfa1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 18/03/2005, 11h32
  4. [CR7] état sur un disque différent du crystal web serv
    Par shadowR dans le forum SAP Crystal Reports
    Réponses: 10
    Dernier message: 23/12/2004, 15h44
  5. Somme de 3 COUNT() sur 3 tables différentes
    Par PyRoFlo dans le forum Langage SQL
    Réponses: 9
    Dernier message: 13/08/2004, 18h36

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