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

Développement Windows Discussion :

Récupérer la liste des Times Zone pour créer une ligne de commande d'environnement UNIX


Sujet :

Développement Windows

  1. #1
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut Récupérer la liste des Times Zone pour créer une ligne de commande d'environnement UNIX
    Bonjour,

    J'ai deja posé cette question pour un projet VB6.

    Aujourd’hui c'est pour un VB.net.

    J'ai besoin d'envoyer dans un petit serveur UNIX une variable d'environnement afin que le serveur soit à l'heure local du client.

    Exemple Nouvelle Calédonie: WET-11

    Exemple pour la France: WET-1WEST,M3.5.0/2,M10.5.0/3

    Avec comme explication:
    WET : pour West Europe Time à -1 heure vers l'ouest par rapport au temps universel.
    WEST :West Europe Summer Time défini comme:
    ----Dernier(5) dimanche (0) de mars (3) à 2h pour le début
    ----Dernier(5) dimanche (0) d'octobre(10) à 3h pour la fin




    Ainsi le serveur change automatiquement lors des passages heures d'hivers et heure d’été.

    Le serveur va chercher l'heure GMT à l'aide d'un serveur NTP.

    En .NET j'ai trouvé la liste complete des time zone du PC à l'aide de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            Dim t As TimeZoneInfo
            For Each t In TimeZoneInfo.GetSystemTimeZones
                Console.WriteLine(t.Id)
            Next
    Toutefois cela ne semble pas me donner toutes les informations que j'ai besoin.
    Y a t'il une autre solution sans passer par les API Windows comme j'ai fait en VB6, qui parfois ne fonctionne pas suivant certain PC ?

    J'ai trouvé le code ci dessous qui pourrais me convenir, il fraudais que je l'adapte, mais c'est uniquement pour la zone local. je recherche donc la même chose mais pour toutes les zones.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
            Const dataFmt As String = "{0,-30}{1}"
            Const timeFmt As String = "{0,-30}{1:yyyy-MM-dd HH:mm}"
     
            Console.WriteLine("This example of selected " & _
                "TimeZone class elements generates the following " & _
                vbCrLf & "output, which varies depending on the " & _
                "time zone in which it is run." & vbCrLf)
     
            ' Get the local time zone and the current local time and year.
            Dim localZone As TimeZone = TimeZone.CurrentTimeZone
            Dim currentDate As DateTime = DateTime.Now
            Dim currentYear As Integer = currentDate.Year
     
            ' Display the names for standard time and daylight saving 
            ' time for the local time zone.
            Console.WriteLine(dataFmt, "Standard time name:", localZone.StandardName)
            Console.WriteLine(dataFmt, "Daylight saving time name:", localZone.DaylightName)
     
     
            ' Display the current date and time and show if they occur 
            ' in daylight saving time.
            Console.WriteLine(vbCrLf & timeFmt, "Current date and time:", currentDate)
            Console.WriteLine(dataFmt, "Daylight saving time?", localZone.IsDaylightSavingTime(currentDate))
     
            ' Get the current Coordinated Universal Time (UTC) and UTC 
            ' offset.
            Dim currentUTC As DateTime = localZone.ToUniversalTime(currentDate)
            Dim currentOffset As TimeSpan = localZone.GetUtcOffset(currentDate)
     
            Console.WriteLine(timeFmt, "Coordinated Universal Time:", currentUTC)
            Console.WriteLine(dataFmt, "UTC offset:", currentOffset)
     
            ' Get the DaylightTime object for the current year.
            Dim daylight As DaylightTime = _
                localZone.GetDaylightChanges(currentYear)
     
            ' Display the daylight saving time range for the current year.
            Console.WriteLine(vbCrLf & "Daylight saving time for year {0}:", currentYear)
            Console.WriteLine("{0:yyyy-MM-dd HH:mm} to " & "{1:yyyy-MM-dd HH:mm}, delta: {2}", daylight.Start, daylight.End, daylight.Delta)
    Pour le moment je continue de chercher autour de cela.


    Avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For Each t In TimeZoneInfo.GetSystemTimeZones
                dim heureETE as boolean = t.SupportsDaylightSavingTime
            Next
    On sait si la zone supporte les heures d’été mais comment les récupérer ?


    Merci

  2. #2
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut
    J'ai réussi.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
     
            For Each t In TimeZoneInfo.GetSystemTimeZones
     
                debug.print ( t.DaylightName)
                debug.print ( t.StandardName)
                debug.print ( t.BaseUtcOffset)
                debug.print ( t.Id)
                debug.print ( t.DisplayName)
     
                Dim adjustments() As TimeZoneInfo.AdjustmentRule = t.GetAdjustmentRules()
                Dim startYear As Integer = 2017
                Dim endYear As Integer = startYear
                If adjustments.Length = 0 Then
                    Debug.Print("    No adjustement")
                Else
                    Dim adjustment As TimeZoneInfo.AdjustmentRule = GetAdjustment(adjustments, startYear)
                    If adjustment Is Nothing Then
                        Debug.Print("   No adjustment rules available for this year.")
                        Continue For
                    End If
                    ' Determine if starting transition is fixed 
                    Dim startTransition, endTransition As TimeZoneInfo.TransitionTime
                    startTransition = adjustment.DaylightTransitionStart
                    ' Determine if starting transition is fixed and display transition info for year
                    If startTransition.IsFixedDateRule Then
                        Console.WriteLine("   Begins on {0} {1} at {2:t}", _
                                          MonthName(startTransition.Month), _
                                          startTransition.Day, _
                                          startTransition.TimeOfDay)
                    Else
                        'DisplayTransitionInfo(startTransition, startYear, "Begins on")
                    End If
                    debug.print ( startTransition.Day)
                    debug.print ( startTransition.DayOfWeek)
                    debug.print ( startTransition.IsFixedDateRule)
                    debug.print ( startTransition.Month)
                    debug.print ( startTransition.TimeOfDay)
                    debug.print ( startTransition.Week)
     
                    ' Determine if ending transition is fixed and display transition info for year
                    endTransition = adjustment.DaylightTransitionEnd
     
                    ' Does the transition back occur in an earlier month (i.e., 
                    ' the following year) than the transition to DST? If so, make
                    ' sure we have the right adjustment rule.
                    If endTransition.Month < startTransition.Month Then
                        endTransition = GetAdjustment(adjustments, startYear + 1).DaylightTransitionEnd
                        endYear += 1
                    End If
     
                    If endTransition.IsFixedDateRule Then
                        Console.WriteLine("   Ends on {0} {1} at {2:t}", _
                                          MonthName(endTransition.Month), _
                                          endTransition.Day, _
                                          endTransition.TimeOfDay)
                    Else
                        'DisplayTransitionInfo(endTransition, endYear, "Ends on")
                    End If
                    debug.print ( endTransition.Day)
                    debug.print ( endTransition.DayOfWeek)
                    debug.print ( endTransition.IsFixedDateRule)
                    debug.print ( endTransition.Month)
                    debug.print ( endTransition.TimeOfDay)
                    debug.print ( endTransition.Week)
     
     
                End If
            Next
    Voila, j'ai tout ce qu'il faut maintenant pour récupérer mes données et créer ma ligne de commande. Si cela peut servir à d'autre personnes.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/01/2016, 18h44
  2. Réponses: 5
    Dernier message: 20/11/2015, 17h42
  3. Réponses: 0
    Dernier message: 07/02/2010, 13h18
  4. Un subselect pour récupérer la liste des champs
    Par 6BerYeti dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/05/2009, 13h46
  5. Réponses: 1
    Dernier message: 25/11/2008, 11h11

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