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 :

[Timezone Daylight] Récupérer les Daylight Boundaries pour un index de timezone donné


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 54
    Points
    54
    Par défaut [Timezone Daylight] Récupérer les Daylight Boundaries pour un index de timezone donné
    Bonjour,

    Je rencontre un souci pour savoir si pour une date et un index de timezone donnés, la date fait partie de l'intervalle d'heure d'été ou pas du timezone en question.
    Je ne vois pas vraiment comment faire cela grâce aux classes TimeZoneInfo et TimeZone (cette dernière permettant de se positionner uniquement sur le CurrentTimeZone).

    J'aimerais pouvoir faire quelque chose dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function bool IsInDaylightBoundaries(DateTime dt, int iTimeZoneIndex)
    {
    }
    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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Il correspond à quoi cet index de timezone ?

    Il y a une méthode statique TimeZoneInfo.GetSystemTimeZones, qui renvoie une collection de toutes les timezones connues du système. C'est pas ça que tu cherches ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private static IList<TimeZoneInfo> _timeZones = TimeZoneInfo.GetSystemTimeZones();
    public static bool IsInDaylightBoundaries(DateTime dt, int iTimeZoneIndex)
    {
        return _timeZones[iTimeZoneIndex].IsDaylightSavingTime(dt);
    }

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 54
    Points
    54
    Par défaut
    Hello,

    Merci !

    C'est tout à fait ce que je recherche ! Mais malheureusement, TimeZoneInfo.GetSystemTimeZones() est apparemment propre au framework 3.5. J'aurais du préciser que j'étais en 2.0.

    Je ne dispose que de TimeZoneInformation et TimeZone.
    TimeZoneInformation propose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TimeZoneInformation[] _timeZones = TimeZoneInformation.EnumZones();
    pour lister l'ensemble des timezones.

    Mais la méthode IsDaylightSavingTime() est un membre de TimeZone et non de TimeZoneInformation.

  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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Manson Voir le message
    Je ne dispose que de TimeZoneInformation et TimeZone.
    Bizarre, j'ai pas TimeZoneInformation moi... (enfin j'ai une classe qui s'appelle comme ça, mais c'est dans Reporting Services et ça a pas l'air d'être celle dont tu parles)

    Un petit coup de Reflector indique que la méthode dont je parlais va chercher l'info dans la base de registre (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones), donc tu pourrais essayer de faire pareil... Il faudrait regarder plus en détail le code de TimeZoneInfo, parce que je sais pas exactement comment décoder certaines propriétés...

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 54
    Points
    54
    Par défaut
    Ouep, TimeZoneInformation devient TimeZoneInfo en 3.5 (cf. MSDN)
    Je vais essayer de me débrouiller avec la base de registre, merci !

  6. #6
    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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Citation Envoyé par Manson Voir le message
    Ouep, TimeZoneInformation devient TimeZoneInfo en 3.5 (cf. MSDN)
    T'es sûr ? Normalement ils suppriment jamais une classe (ils la marquent comme obsolète), et les seules classes TimeZoneInformation que je vois sur MSDN sont dans des namespaces "exotiques". C'est quoi le nom complet de la classe dont tu parles ?

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 54
    Points
    54

  8. #8
    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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    ah ok... mais TimeZoneInformation, ça a l'air d'être un truc spécifique au micro framework :

    Available in .NET Micro Framework version 2.0, 2.5

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2002
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 57
    Points : 54
    Points
    54
    Par défaut
    Bonjour,

    J'ai finalement intégré ma propre classe TimeZoneInfo qui va chercher ce qu'il faut dans le Registry, comme la classe 3.5 en fait, en adaptant facilement cette source VB :

    http://www.codeproject.com/KB/vb/TimeZoneInfo.aspx

    TimeZoneInfo.GetSystemTimeZones() devient alors possible

    Merci !

  10. #10
    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 : 43
    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
    Points : 39 753
    Points
    39 753
    Par défaut
    Bien vu ! On n'est jamais aussi bien servi que par soi-même

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/09/2010, 21h57
  2. Réponses: 0
    Dernier message: 08/06/2010, 12h33
  3. Réponses: 1
    Dernier message: 08/03/2010, 00h18
  4. Réponses: 3
    Dernier message: 13/05/2008, 13h57
  5. Réponses: 3
    Dernier message: 23/01/2004, 22h02

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