Page 1 sur 1

TimeZonesView

Publié : ven. 19/avr./2024 10:18
par Philippe_GEORGES
Bonjour à tous,

Sur le site nirsoft.net, on peut trouver un petit programme très pratique : timezonesview.exe

Ce programme permet d'obtnir les décallages horaires suivant l'heure d'été....etc.

Je souhaite faire la même application en Purebasic, avec la possibilité toutefois de choisir l'année, qui ne sera pas forcément celle en cours. (uniquement pour PC)

Si quelqu'un a une idée ou mieux, a déjà traité ce problème. Quelles sont les API à utiliser....

Merci d'avance,

Phil

Re: TimeZonesView

Publié : sam. 20/avr./2024 8:33
par Mesa
Il fut un temps où on pouvait telecharger une base de données de toutes les villes du monde (1G0 ! décompressée) avec leur coordonnées, leur heure d'été et leur fuseau.
C'était ici https://geonames.nga.mil/gns/html/cntyf ... 200713.zip

En cherchant bien...

M.

Re: TimeZonesView

Publié : sam. 20/avr./2024 14:01
par boddhi
Salut,

Jette un coup d'oeil à l'API SystemTimeToTzSpecificLocalTime

Note : Pour récupérer les infos du système courant, il y a GetTimeZoneInformation

Re: TimeZonesView

Publié : lun. 13/mai/2024 8:57
par Micoute
Bonjour Philippe_Georges, voilà ce que j'ai.

Code : Tout sélectionner

Procedure.s ZoneFuseau()
  ; Retourne le nom du fuseau horaire
  Protected TimeZoneInfo.TIME_ZONE_INFORMATION
  Protected i=0, NomStandard$=""
  GetTimeZoneInformation_(TimeZoneInfo)
  While TimeZoneInfo\StandardName[i]<>0 And i<=32
    NomStandard$ + Chr(TimeZoneInfo\StandardName[i])
    i + 1
  Wend
  ProcedureReturn NomStandard$
EndProcedure

Debug ZoneFuseau()

Re: TimeZonesView

Publié : lun. 13/mai/2024 9:10
par Micoute
Sinon, j'ai ça.

Code : Tout sélectionner

Procedure SiAnneeBissextile(Annee.q) ;Indique si l'année donnée est bissextile
    If ((Annee % 4) = 0)
      If (Annee % 100) Or ((Annee % 400) = 0)
        ProcedureReturn #True
      EndIf
    EndIf
  EndProcedure
  Procedure JoursDansMois(Annee, Mois) ;Retoure le nombre de jours dans le mois donné
    Select Mois
      Case 1,3,5,7,8,10,12
        ProcedureReturn 31
      Case 4,6,9,11
        ProcedureReturn 30
      Default
        ProcedureReturn 28 + SiAnneeBissextile(Annee)
    EndSelect
  EndProcedure
  Procedure.b JourDeSemaine(Date.q) ;Renvoie la valeur du jour dans la semaine de la date spécifiée (0 = dimanche, 6 = samedi).
    Protected Jours.q, joursemaine.b
    If (Date < 0)
      ProcedureReturn 0
    EndIf
    Jours = Date/24/60/60
    Jours + 1
    joursemaine = Jours % 7
    ProcedureReturn joursemaine
  EndProcedure
  Procedure TrouverQuatriemeDimanche(Annee,Mois)
    Protected Jour=22
    Protected DateQuatriemeDimanche=Date(Annee,Mois,Jour,0,0,0)
    
    ;Cherche le Quatrième dimanche
    While JourDeSemaine(DateQuatriemeDimanche)<>0
      
      Jour+1
      DateQuatriemeDimanche=Date(Annee,Mois,Jour,0,0,0)
    Wend
    
    ProcedureReturn DateQuatriemeDimanche
    
  EndProcedure
  Procedure TrouverDernierDimanche(Annee,Mois)
    Protected Jour=JoursDansMois(Annee, Mois) - 6
    Protected DateDernierDimanche=Date(Annee,Mois,Jour,0,0,0)
    
    ;Cherche le dernier dimanche
    While JourDeSemaine(DateDernierDimanche)<>0
      
      Jour+1
      DateDernierDimanche=Date(Annee,Mois,Jour,0,0,0)
    Wend
    ProcedureReturn DateDernierDimanche
    
  EndProcedure
  Procedure Heure_d_ete(Annee=-1) ;l'heure d'été commence toujours le dernier dimanche de mars
    Protected Resultat = TrouverDernierDimanche(Annee,3)
    If Resultat = -1
      Resultat = TrouverQuatriemeDimanche(Annee,3)
    EndIf  
    ProcedureReturn Resultat
  EndProcedure
  Procedure Heure_d_hiver(Annee=-1) ;l'heure d'hiver commence toujours le dernier dimanche d'octobre
    Protected Resultat
    Resultat = TrouverDernierDimanche(Annee,10)
    If Resultat = -1
      Resultat = TrouverQuatriemeDimanche(Annee,10)
    EndIf
    ProcedureReturn Resultat
  EndProcedure
  
  Debug FormatDate("%dd/%mm/%yyyy", Heure_d_ete(2024))
  Debug FormatDate("%dd/%mm/%yyyy", Heure_d_hiver(2024))

Re: TimeZonesView

Publié : mar. 14/mai/2024 10:17
par Philippe_GEORGES
Merci Micoute,

Mais si je veux les informations pour un autre point du globe ?

Si tu as une idée !

Phil

Re: TimeZonesView

Publié : mer. 15/mai/2024 16:06
par kernadec
bjr Philippe
je connais bien ce problème de la gestion de la longitude.
alors voilà ce que je pense des fuseaux horaires :wink:

pour un thème Astral la domification doit tenir compte de la longitude qui peut nous faire modifié de plus ou moins 12 heures
les calculs de la domification du lieu.
donc il faut gérer le temps universel de la date de l heure et la longitude en degrés 12h/180deg en plus ou en moins des calculs horaires
En astrologie ce qui compte c'est l heure du soleil (GMT)

le problème en astrologie c' est que déjà la gestion de l heure d'été peut nous faire changer de date...et très souvent revenir
au jour d' avant pour les calculs de Domification.

Idem pour la longitude, perso je n utilise pas les fuseaux horaires qui ne servent que pour éviter les accidents de trains,
je préfère m'en passer car comme je l'ai dit auparavant la longitude peut atteindre
plus 12 heures en Est et moins 12 heures en Ouest
donc là aussi on peut se retrouver le jour d' avant ou le jour d'après pour les calculs du thème astral

Exemple pour le France entre les villes de Strasbourg long: 7.75 Est et de Brest: 4.486 Ouest
ce qui donnera une différence de longitude de: 12. 236 = 7.75 + 4.486
12 degrés 236 dec. il y auras des différences entre les Positions de la domification pour un thème qui a été établi pour Brest
et celui établi pour pour Strasbourg pour une date identique en heure d'hiver ou d'été.
je rappel que ces villes ont un fuseau horaire identique pour la France Paris (Greenwich) pour son heure légale

Donc tenir compte d'un fuseau horaire va réduire les différences.
mais la gestion du changement de plus ou moins 1 jour restera à gérer.
donc pas besoin de fuseau horaire pour le calcul d'un thème astral
il faut gérer en amont tous ces décalage horaires de date d' heure légale et de longitude.
et ainsi obtenir la date et l'heure du calcul du thème dans les éphémérides
Il est important de se rappeler que c'est la verticale du lieu qui compte pour établir un thème astral complet.

Cordialement

Re: TimeZonesView

Publié : jeu. 16/mai/2024 11:31
par Philippe_GEORGES
Merci Kernadec !!

Je sais, je suis d'accord avec toi ! Le problème de l'heure d'été est aussi un souci majeur. Simplement, l'heure d'été ne s'applique par partout, d'où l'utilité de ce petit programme pour savoir s'il faut ou non supprimer une heure !

C'est pour cette raison que je m'interrogeais sur ce point !

Voilà.

Phil