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 70 71 72 73 74 75 76 77 78
|
PROCEDURE Get_dDateLocale(__sDateHeureLocale est une chaîne)
__sDateHeureLocale = ""
LOCAL
iTimeOut est un entier
iTimeOut = HTTPTimeOut()
HTTPTimeOut(10000)
cMaRequete est un httpRequête
cMaRequete..URL = "http://google.fr"
cMaReponse est un httpRéponse = HTTPEnvoie(cMaRequete)
SI ErreurDetectee ALORS
Erreur(ErreurInfo(errComplet))
RENVOYER Faux
FIN
HTTPTimeOut(iTimeOut)
LOCAL
sDateHeureUTC est une chaîne
dDate est une Date
hHeure est une Heure
dhDateUTC est une DateHeure
sDateHeureUTC = cMaReponse..Header["Date"]
dDate = ChaîneVersDate(Gauche(sDateHeureUTC,16),maskDateEmail)
hHeure = ChaîneVersHeure(Milieu(sDateHeureUTC,18,9),"HH:MM:SS")
dhDateUTC = dDate+""+hHeure
SI DateValide(dhDateUTC) ALORS
LOCAL
bOK est un booléen
dhDateHeureLocale est une DateHeure
sTimeZoneKeyName est une chaîne
iDynamicDaylightTimeDisabled est un entier
//On se base sur le fuseau horaire définit sur le poste en cours pour trouver l'heure locale par rapport à l'heure UTC
dhDateHeureLocale = DateHeureUTCVersLocale(dhDateUTC)
iDynamicDaylightTimeDisabled = RegistreLit("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation","DynamicDaylightTimeDisabled",bOK)
SI bOK = Faux _OU_ iDynamicDaylightTimeDisabled <> 0 ALORS
//DateHeureUTCVersLocale se charge tout seul de prendre en compte l'heure d'été si on a laissé Windows déterminer automatiquement l'heure d'été.
//Dans le cas contraire, il faut la calculer.
//Passage à l'heure d'été le dernier dimanche de mars à deux heures du matin (+60mins)
//Passage à l'heure d'hiver (normale) le dernier dimanche d'octobre à trois heures du matin (-60mins)
sTimeZoneKeyName = RegistreLit("HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation","TimeZoneKeyName",bOK)
SI sTimeZoneKeyName = "Romance Standard Time" ALORS
LOCAL
dhDernDimancheMars est une DateHeure
dhDernDimancheOctobre est une DateHeure
dhDernDimancheMars = dhDateHeureLocale..Année+"04010200"
dhDernDimancheOctobre = dhDateHeureLocale..Année+"11010300"
dhDernDimancheMars..Jour -=1
TANTQUE DateVersJour(dhDernDimancheMars..PartieDate) <> 7
dhDernDimancheMars..Jour -=1
FIN
dhDernDimancheOctobre..Jour -=1
TANTQUE DateVersJour(dhDernDimancheOctobre..PartieDate) <> 7
dhDernDimancheOctobre..Jour -=1
FIN
SI dhDateHeureLocale >= dhDernDimancheMars _ET_ dhDateHeureLocale < dhDernDimancheOctobre ALORS
dhDateHeureLocale..Heure += 1
FIN
FIN
FIN
__sDateHeureLocale = dhDateHeureLocale
FIN
RENVOYER Vrai |
Partager