Heures d'été en France
- Philippe_GEORGES
- Messages : 140
- Inscription : mer. 28/janv./2009 13:28
Heures d'été en France
Bonjour
Pour une date donnée, je voudrais déterminer s'il y a lieu d'appliquer ou non l'heure d'été. (-1h ou -2 h par rapport à l'heure GMT)
Je sais que le sujet a déja été traité, mais impossible de retrouver le post.
Si quelqu'un a une idée à ce sujet...
Merci d'avance,
Phil
Pour une date donnée, je voudrais déterminer s'il y a lieu d'appliquer ou non l'heure d'été. (-1h ou -2 h par rapport à l'heure GMT)
Je sais que le sujet a déja été traité, mais impossible de retrouver le post.
Si quelqu'un a une idée à ce sujet...
Merci d'avance,
Phil
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
Re: Heures d'été en France
@ phiilippe_GEORGES
Pour ton information ce n'est pas GMT -1h ou -2h, mais GMT + 1h ou +2h
Le changement se fait au printemps et a l'automne.mais attention les dates sont variables en fonction de certaines années. Pour l'automne entre le 19 et le 21 mars.
Il semble que bientôt il n'y aura plus de changement d'heure.
Si je retrouve le calcul, je le posterais.
a+
Pour ton information ce n'est pas GMT -1h ou -2h, mais GMT + 1h ou +2h
Le changement se fait au printemps et a l'automne.mais attention les dates sont variables en fonction de certaines années. Pour l'automne entre le 19 et le 21 mars.
Il semble que bientôt il n'y aura plus de changement d'heure.

Si je retrouve le calcul, je le posterais.
a+
Re: Heures d'été en France
Voilà quelques petites procédures pour arranger le coup.
le printemps commence le dernier dimanche de mars et l'automne le dernier dimanche d'octobre.
le printemps commence le dernier dimanche de mars et l'automne le dernier dimanche d'octobre.
Code : Tout sélectionner
;Premier dimanche du mois
Procedure TrouverPremierDimanche(Annee,Mois)
Protected Jour=1
Protected DatePremierDimanche=Date(Annee,Mois,Jour,0,0,0)
;Cherche le premier dimanche
While DayOfWeek(DatePremierDimanche)<>0
Jour+1
DatePremierDimanche=Date(Annee,Mois,Jour,0,0,0)
Wend
ProcedureReturn DatePremierDimanche
EndProcedure
;Second dimanche du mois
Procedure TrouverDeuxiemeDimanche(Annee,Mois)
Protected Jour=8
Protected DateDeuxiemeDimanche=Date(Annee,Mois,Jour,0,0,0)
;Cherche le deuxième dimanche
While DayOfWeek(DateDeuxiemeDimanche)<>0
Jour+1
DateDeuxiemeDimanche=Date(Annee,Mois,Jour,0,0,0)
Wend
ProcedureReturn DateDeuxiemeDimanche
EndProcedure
;Troisième jour du mois
Procedure TrouverTroisiemeDimanche(Annee,Mois)
Protected Jour=15
Protected DateTroisiemeDimanche=Date(Annee,Mois,Jour,0,0,0)
;Cherche le Troisième dimanche
While DayOfWeek(DateTroisiemeDimanche)<>0
Jour+1
DateTroisiemeDimanche=Date(Annee,Mois,Jour,0,0,0)
Wend
ProcedureReturn DateTroisiemeDimanche
EndProcedure
;Pénultième dimanche du mois
Procedure TrouverQuatriemeDimanche(Annee,Mois)
Protected Jour=22
Protected DateQuatriemeDimanche=Date(Annee,Mois,Jour,0,0,0)
;Cherche le Quatrième dimanche
While DayOfWeek(DateQuatriemeDimanche)<>0
Jour+1
DateQuatriemeDimanche=Date(Annee,Mois,Jour,0,0,0)
Wend
ProcedureReturn DateQuatriemeDimanche
EndProcedure
;Dernier dimanche du mois
Procedure TrouverDernierDimanche(Annee,Mois)
Protected Jour=JoursDansMois() - 6
Protected DateDernierDimanche=Date(Annee,Mois,Jour,0,0,0)
;Cherche le dernier dimanche
While DayOfWeek(DateDernierDimanche)<>0
Jour+1
DateDernierDimanche=Date(Annee,Mois,Jour,0,0,0)
Wend
ProcedureReturn DateDernierDimanche
EndProcedure
Procedure Heure_d_ete(Annee=-1)
Protected Resultat = TrouverDernierDimanche(Annee,3) ;l'heure d'été commence toujours le dernier dimanche de mars
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
[/Code_pb]
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- Philippe_GEORGES
- Messages : 140
- Inscription : mer. 28/janv./2009 13:28
Re: Heures d'été en France
Merci, c'est un bon début !!
Par contre, il me manque la fonction JoursDansMois()
Phil
Par contre, il me manque la fonction JoursDansMois()
Phil
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
Re: Heures d'été en France
bsr Philippe
perso; j utilise les infos contenues dans ce livre, c'est le plus complet que je connais
acheté dans les années 80 quand j'écrivais un programme d'astro sur un apple deux E
mais si tu as mieux, je suis preneur
mais on en trouve encore des exemplaires.
https://www.chasse-aux-livres.fr/prix/B ... de-gabriel
cordialement
perso; j utilise les infos contenues dans ce livre, c'est le plus complet que je connais
acheté dans les années 80 quand j'écrivais un programme d'astro sur un apple deux E

mais si tu as mieux, je suis preneur

https://www.chasse-aux-livres.fr/prix/B ... de-gabriel
cordialement
Re: Heures d'été en France
Code : Tout sélectionner
Procedure.b SiBissextile(Annee=-1)
;Retourne Vrai si l'année est une année bissextile (366 jours)
;S'il n'y a aucun argument, l'année en cours est utilisée
;Dans le calendrier grégorien, l'année bissextile est
;toute année divisible par 4,sauf
;année du centenaire non divisible par 400
;L'année équinoxe de printemps est d'environ 365.242374 jours longs (et croissants)
;Le calendrier iranien est basé sur 8 jours bissextiles tous les 33ans (365,242424 jours)
;dictionary.die.net/leap%20year
;en.wikipedia.org/wiki/Leap_year
If Annee<=0
Annee=Year(Date())
EndIf;Cetteannée
If(Mod(Annee,4)=0 And Mod(Annee,100)<>0)Or(Mod(Annee,400)=0)
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure.b JoursDansMois(Annee=-1,Mois=-1)
;Retourne le nombre de jours dans le mois donné (28..31)
;Si l'année est absente, l'année en cours est utilisée
;Si l'année est présente mais le mois est absent,février est utilisé
;Si l'année et le mois sont tous deux absents, le mois courant de l'année en cours est utilisé
Protected Jours
If Annee = -1
Annee=Year(Date())
If Mois = -1
Mois=Month(Date())
EndIf
Else
If Mois <= 0 : Mois = 2 : EndIf
EndIf
If Mois=2
If SiBissextile(Annee)
Jours=29
Else
Jours=28
EndIf
Else
jours=31 - $A55 >> Mois & 1
EndIf
NbjoursMois=Jours
ProcedureReturn NbjoursMois
EndProcedure
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: Heures d'été en France
Salut a tous
Bon je n'est pas retrouvé le code en question.
Alors j'ai fait ceci a l'arrache. Si tu n'a pas besoin de savoir que c'est a 3H du matin que l'heure change. Sinon il c'est facile d'ajouter l'heure du changement.
Un petit bonjour a mon amis Micoute de retour sur le forum
Bon je n'est pas retrouvé le code en question.
Alors j'ai fait ceci a l'arrache. Si tu n'a pas besoin de savoir que c'est a 3H du matin que l'heure change. Sinon il c'est facile d'ajouter l'heure du changement.
Code : Tout sélectionner
Procedure HIE()
Dt$ = FormatDate("%dd/%mm/%yyyy", Date())
J$ = Left(Dt$,2): M$ = Mid(Dt$,4,2):A$ = Right(Dt$,4)
;J$ = "26":M$ = "3"; pour faire des simulations de dates
Debug j$ + " " + M$ + " " + A$
Select Val(M$)
Case 4 To 9
ProcedureReturn 2
Case 1,2,11,12
ProcedureReturn 1
Case 3,10
For z = 1 To 31
If DayOfWeek(Date(Val(A$), Val(M$), z, 0, 0, 0)) = 0
I = z
EndIf
Next
If Val(M$)= 3
If Val(J$) >= i :ProcedureReturn 2:Else:ProcedureReturn 1:EndIf
EndIf
If Val(M$)= 10
If Val(J$) >= i :ProcedureReturn 1:Else:ProcedureReturn 2:EndIf
EndIf
EndSelect
EndProcedure
result =HIE()
;********************** Test ***********************************
If result = 2
Debug"Heure GMT + 2 : Heure d'été"
Else
Debug"Heure GMT + 1 : Heure d'hiver"
EndIf
Re: Heures d'été en France
Bon:j'ai optimisé le code
Bonne journée a tous

Bonne journée a tous
Code : Tout sélectionner
[quote]
Procedure HIE()
Dt$ = FormatDate("%dd/%mm/%yyyy", Date())
J = Val(Left(Dt$,2)): M = Val(Mid(Dt$,4,2)):A = Val(Right(Dt$,4))
; = 29:M = 3; pour faire des simulations de dates
Select M
Case 4 To 9
ProcedureReturn 2
Case 1,2,11,12
ProcedureReturn 1
Case 3,10
For z = 31 To 1 Step -1
If DayOfWeek(Date(A, M, z, 0, 0, 0)) = 0
I = z :Break
EndIf
Next
If M = 3
If J >= i :ProcedureReturn 2:Else:ProcedureReturn 1:EndIf
EndIf
If M = 10
If J >= i :ProcedureReturn 1:Else:ProcedureReturn 2:EndIf
EndIf
EndSelect
EndProcedure
result =HIE()
;********************** Test ***********************************
If result = 2
Debug"Heure GMT + 2 : Heure d'été"
Else
Debug"Heure GMT + 1 : Heure d'hiver"
EndIf
[/quote]
Re: Heures d'été en France
Code : Tout sélectionner
EnableExplicit
Define TIME_ZONE_INFORMATION.TIME_ZONE_INFORMATION
Select GetTimeZoneInformation_(TIME_ZONE_INFORMATION)
Case #TIME_ZONE_ID_UNKNOWN
Debug "Unknown"
Case #TIME_ZONE_ID_STANDARD
Debug "Heure d'hivers"
Case #TIME_ZONE_ID_DAYLIGHT
Debug "Heure d'été"
EndSelect
Code : Tout sélectionner
; Description: Returns the status of whether the current time is daylight saving time
; OS: Windows, Linux, Mac
; English-Forum:
; French-Forum:
; German-Forum:
; -----------------------------------------------------------------------------
; MIT License
;
; Copyright (c) 2017-2018 Sicro
;
; Permission is hereby granted, free of charge, to any person obtaining a copy
; of this software and associated documentation files (the "Software"), to deal
; in the Software without restriction, including without limitation the rights
; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
; copies of the Software, and to permit persons to whom the Software is
; furnished to do so, subject to the following conditions:
;
; The above copyright notice and this permission notice shall be included in all
; copies or substantial portions of the Software.
;
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
; SOFTWARE.
Procedure.i IsDayLightSavingTime()
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Windows
; https://msdn.microsoft.com/de-de/library/windows/desktop/ms724421(v=vs.85).aspx
Protected.TIME_ZONE_INFORMATION lpTimeZoneInformation
Select GetTimeZoneInformation_(@lpTimeZoneInformation)
Case #TIME_ZONE_ID_STANDARD : ProcedureReturn #False
Case #TIME_ZONE_ID_DAYLIGHT : ProcedureReturn #True
Case #TIME_ZONE_ID_UNKNOWN : ProcedureReturn -1
EndSelect
CompilerCase #PB_OS_Linux
; https://linux.die.net/man/2/time
; https://linux.die.net/man/3/localtime
CompilerIf Not Defined(tm, #PB_Structure)
Structure tm Align #PB_Structure_AlignC
tm_sec.l ; 0 à 59 ou jusqu'à 60 pour les secondes intercalaires
tm_min.l ; 0 à 59
tm_hour.l ; 0 à 23
tm_mday.l ; Jour du mois : 1 à 31
tm_mon.l ; Mmois : 0 à 11 (mois depuis janvier)
tm_year.l ; Nombre d'années depuis l'an 1900
tm_wday.l ; Jour de la semaine : 0 à 6, 0 = dimanche
tm_yday.l ; Jours depuis le début de l'année : 0 à 365 (donc 365 est 366 puisqu'il compte après le 1er janvier)
tm_isdst.l ; heure d'été ? tm_isdst > 0 = Oui
; tm_isdst = 0 = Non
; tm_isdst < 0 = inconnu
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
tm_gmtoff.l ; Décalage par rapport à UTC en secondes
*tm_zone ; Nom de l'abréviation du fuseau horaire
CompilerElse
tm_zone.l ; espace réservé
tm_gmtoff.l ; Décalage par rapport à UTC en secondes
*tm_zone64 ; Nom de l'abréviation du fuseau horaire
CompilerEndIf
EndStructure
CompilerEndIf
Protected.tm *CurrentTime = time_(0)
Protected.tm *LocalTime = localtime_(@*CurrentTime)
If *LocalTime\tm_isdst > 0
ProcedureReturn #True
ElseIf *LocalTime\tm_isdst = 0
ProcedureReturn #False
ElseIf *LocalTime\tm_isdst < 0
ProcedureReturn -1
EndIf
CompilerCase #PB_OS_MacOS
; http://www.purebasic.fr/english/viewtopic.php?p=410207#p410207
Protected TimeZoneObject = CocoaMessage(0, 0, "NSTimeZone systemTimeZone")
Protected DaylightSavingTime
CocoaMessage(@DaylightSavingTime, TimeZoneObject, "isDaylightSavingTime")
ProcedureReturn DaylightSavingTime
CompilerEndSelect
EndProcedure
;-Example
CompilerIf #PB_Compiler_IsMainFile
Select IsDayLightSavingTime()
Case #True : Debug "Heure d'été !"
Case #False : Debug "Heure d'hiver !"
Default : Debug "inconnu !"
EndSelect
CompilerEndIf
Code : Tout sélectionner
Procedure ChercheDernierDimanche(Annee, Mois)
Jour=31
DateDernierDimanche=Date(Annee, Mois, Jour, 0, 0, 0)
;Cherche le dernier dimanche
While DayOfWeek(DateDernierDimanche)<>0
jour - 1
DateDernierDimanche= Date(annee, mois, jour, 0, 0, 0)
Wend
ProcedureReturn DateDernierDimanche
EndProcedure
Procedure HeureEte_ChangementdeDate(Date)
;Printemps :
;- passer de l'heure normale à l'heure d'été
;- l'horloge est avancée d'une heure à à 2h le dernier dimanche du mois de mars.
;Automne :
;- passer de l'heure d'été à l'heure normale
;- l'horloge est retardée d'une heure à 3h le dernier dimanche du mois d'octobre.
#Printemps = 3
#Automne = 10
; Annee = Val(InputRequester("Changement d'heure", "Quelle année ?", Str(Year(Date()))))
Annee = Date;Year(Date);Year(Date())
If Annee > 1970 And Annee < 2038
Dimanche = ChercheDernierDimanche(Annee, #Printemps)
Debug "Passage de l'heure normale à l'heure d'été = " + Str(Day(Dimanche)) + "/" + Str(Month(Dimanche)) + "/" + Str(Year(Dimanche))
Dimanche = ChercheDernierDimanche(Annee, #Automne)
Debug "Passage de l'heure d'été à l'heure normale = " + Str(Day(Dimanche)) + "/" + Str(Month(Dimanche)) + "/" + Str(Year(Dimanche))
EndIf
; Petit rappel sur l'heure d'été en France, elle ne date que depuis l'année 1976
; (sinon, elle avait aussi été en vigueur dans les années 1942 à 1945)
;
; je dois ajouter que la règle des dates a subit des variantes, exemple:
; de 1977 à 1980 c'était le premier week-end d'avril et le dernier de septembre
; ensuite le dernier week-End de septembre a continué d'être en vigueur jusque 1995 pour passer à fin octobre en 1996
;
; Cordialement
;
; Historique des dates:
; Année : 1976
; Passage à l'heure d'été le Dimanche 28 Mars 1976 - 00 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Samedi 25 Septembre 1976 - 23 h 00 (GMT + 1 h ) CET
; Année : 1977
; Passage à l'heure d'été le Dimanche 3 Avril 1977 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 25 Septembre 1977 - 01 h 00 (GMT + 1 h ) CET
; Année : 1978
; Passage à l'heure d'été le Dimanche 2 Avril 1978 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 1 Octobre 1978 - 01 h 00 (GMT + 1 h ) CET
; Année : 1979
; Passage à l'heure d'été le Dimanche 1 Avril 1979 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 30 Septembre 1979 - 01 h 00 (GMT + 1 h ) CET
; Année : 1980
; Passage à l'heure d'été le Dimanche 6 Avril 1980 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 28 Septembre 1980 - 01 h 00 (GMT + 1 h ) CET
; Année : 1981
; Passage à l'heure d'été le Dimanche 29 Mars 1981 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 27 Septembre 1981 - 01 h 00 (GMT + 1 h ) CET
; Année : 1982
; Passage à l'heure d'été le Dimanche 28 Mars 1982 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 26 Septembre 1982 - 01 h 00 (GMT + 1 h ) CET
; Année : 1983
; Passage à l'heure d'été le Dimanche 27 Mars 1983 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 25 Septembre 1983 - 01 h 00 (GMT + 1 h ) CET
; Année : 1984
; Passage à l'heure d'été le Dimanche 25 Mars 1984 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 30 Septembre 1984 - 01 h 00 (GMT + 1 h ) CET
; Année : 1985
; Passage à l'heure d'été le Dimanche 31 Mars 1985 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 29 Septembre 1985 - 01 h 00 (GMT + 1 h ) CET
; Année : 1986
; Passage à l'heure d'été le Dimanche 30 Mars 1986 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 28 Septembre 1986 - 01 h 00 (GMT + 1 h ) CET
; Année : 1987
; Passage à l'heure d'été le Dimanche 29 Mars 1987 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 27 Septembre 1987 - 01 h 00 (GMT + 1 h ) CET
; Année : 1988
; Passage à l'heure d'été le Dimanche 27 Mars 1988 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 25 Septembre 1988 - 01 h 00 (GMT + 1 h ) CET
; Année : 1989
; Passage à l'heure d'été le Dimanche 26 Mars 1989 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 24 Septembre 1989 - 01 h 00 (GMT + 1 h ) CET
; Année : 1990
; Passage à l'heure d'été le Dimanche 25 Mars 1990 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 30 Septembre 1990 - 01 h 00 (GMT + 1 h ) CET
; Année : 1991
; Passage à l'heure d'été le Dimanche 31 Mars 1991 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 29 Septembre 1991 - 01 h 00 (GMT + 1 h ) CET
; Année : 1992
; Passage à l'heure d'été le Dimanche 29 Mars 1992 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 27 Septembre 1992 - 01 h 00 (GMT + 1 h ) CET
; Année : 1993
; Passage à l'heure d'été le Dimanche 28 Mars 1993 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 26 Septembre 1993 - 01 h 00 (GMT + 1 h ) CET
; Année : 1994
; Passage à l'heure d'été le Dimanche 27 Mars 1994 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 25 Septembre 1994 - 01 h 00 (GMT + 1 h ) CET
; Année : 1995
; Passage à l'heure d'été le Dimanche 26 Mars 1995 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 24 Septembre 1995 - 01 h 00 (GMT + 1 h ) CET
; Année : 1996
; Passage à l'heure d'été le Dimanche 31 Mars 1996 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 27 Octobre 1996 - 01 h 00 (GMT + 1 h ) CET
; Année : 1997
; Passage à l'heure d'été le Dimanche 30 Mars 1997 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 26 Octobre 1997 - 01 h 00 (GMT + 1 h ) CET
; Année : 1998
; Passage à l'heure d'été le Dimanche 29 Mars 1998 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 25 Octobre 1998 - 01 h 00 (GMT + 1 h ) CET
; Année : 1999
; Passage à l'heure d'été le Dimanche 28 Mars 1999 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 31 Octobre 1999 - 01 h 00 (GMT + 1 h ) CET
; Année : 2000
; Passage à l'heure d'été le Dimanche 26 Mars 2000 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 29 Octobre 2000 - 01 h 00 (GMT + 1 h ) CET
; Année : 2001
; Passage à l'heure d'été le Dimanche 25 Mars 2001 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 28 Octobre 2001 - 01 h 00 (GMT + 1 h ) CET
; Année : 2002
; Passage à l'heure d'été le Dimanche 31 Mars 2002 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 27 Octobre 2002 - 01 h 00 (GMT + 1 h ) CET
; Année : 2003
; Passage à l'heure d'été le Dimanche 30 Mars 2003 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 26 Octobre 2003 - 01 h 00 (GMT + 1 h ) CET
; Année : 2004
; Passage à l'heure d'été le Dimanche 28 Mars 2004 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 31 Octobre 2004 - 01 h 00 (GMT + 1 h ) CET
; Année : 2005
; Passage à l'heure d'été le Dimanche 27 Mars 2005 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 30 Octobre 2005 - 01 h 00 (GMT + 1 h ) CET
; Année : 2006
; Passage à l'heure d'été le Dimanche 26 Mars 2006 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 29 Octobre 2006 - 01 h 00 (GMT + 1 h ) CET
; Année : 2007
; Passage à l'heure d'été le Dimanche 25 Mars 2007 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 28 Octobre 2007 - 01 h 00 (GMT + 1 h ) CET
; Année : 2008
; Passage à l'heure d'été le Dimanche 30 Mars 2008 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 26 Octobre 2008 - 01 h 00 (GMT + 1 h ) CET
; Année : 2009
; Passage à l'heure d'été le Dimanche 29 Mars 2009 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 25 Octobre 2009 - 01 h 00 (GMT + 1 h ) CET
; Année : 2010
; Passage à l'heure d'été le Dimanche 28 Mars 2010 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 31 Octobre 2010 - 01 h 00 (GMT + 1 h ) CET
; Année : 2011
; Passage à l'heure d'été le Dimanche 27 Mars 2011 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 30 Octobre 2011 - 01 h 00 (GMT + 1 h ) CET
; Année : 2012
; Passage à l'heure d'été le Dimanche 25 Mars 2012 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 28 Octobre 2012 - 01 h 00 (GMT + 1 h ) CET
; Année : 2013
; Passage à l'heure d'été le Dimanche 31 Mars 2013 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 27 Octobre 2013 - 01 h 00 (GMT + 1 h ) CET
; Année : 2014
; Passage à l'heure d'été le Dimanche 30 Mars 2014 - 01 h 00 (GMT + 2 h ) CEST
; Retour à l'heure normale le Dimanche 26 Octobre 2014 - 01 h 00 (GMT + 1 h ) CET
EndProcedure
HeureEte_ChangementdeDate(2023)
Code : Tout sélectionner
; Depuis 1996
; ; la période de l'heure d'été commence à 1 h UTC, le dernier dimanche de mars ;
; ; la période de l'heure d'été se termine à 1 h UTC, le dernier dimanche d'octobre.
; 2023 Début: 02:00 26 mars Fin: 03:00 29 octobre
Procedure HE(date)
;France
fuseau=1
hpassage=fuseau+1;1hutc
A=Year(Date)
M=Month(Date)
J=Day(date)
; 0 = Dimanche
; 1 : Lundi
; 2 : Mardi
; 3 : Mercredi
; 4 : Jeudi
; 5 : Vendredi
; 6 : Samedi
Tmpdate1=Date(A, 3, 31, hpassage, 0, 0)
dow1=DayOfWeek(Tmpdate1)
date1=Date(A, 3, 31-dow1, hpassage, 0, 0)
Tmpdate2=Date(A,10,31, hpassage, 0, 0)
dow2=DayOfWeek(Tmpdate2)
date2=Date(A,10,31-dow2, hpassage+1, 0, 0)
If (dow1>-1) And(dow2)>-1
If (date>=date1) And (date<=date2)
ProcedureReturn 1
Else
ProcedureReturn 0
EndIf
Else
Debug "erreur"
ProcedureReturn -1
EndIf
EndProcedure
result =HE(Date())
Debug result
Select result
Case 1
Debug"Heure GMT + 2 : Heure d'été"
Case 0
Debug"Heure GMT + 1 : Heure d'hiver"
Default
Debug "erreur"
EndSelect
- Philippe_GEORGES
- Messages : 140
- Inscription : mer. 28/janv./2009 13:28
Re: Heures d'été en France
Merci Mesa !!
Je pense avoir tout ce qu'il faut, avec un code portable Windows/Mac
Phil
Je pense avoir tout ce qu'il faut, avec un code portable Windows/Mac
Phil
Philippe GEORGES
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com
"La simplicité est la sophistication suprême" (De Vinci)
assistance informatique, création de logiciels
georges.informatique@gmail.com