#################HeureGMT############################
PROCEDURE HeureGMT(HeureLocale)
// Heure au format GMT :
"Mon, 21 Jun 2004 07:57:43 GMT"
// Heure au format GMT +2 :
Mon, 21 Jun 2004 07:57:43 +0200"
// Récupération de l'heure
GMT quelque soit le faisseau d'envoi.
// Renvoie l'heure
GMT
sHeureGMT est une chaîne
sHeure est une
chaîne
sDate est une
chaîne
sJour est une chaîne
sMois est une chaîne
sAnnée est une chaîne
sDécalage est une
chaîne
eDécalage est un entier
tabMois est un tableau de
12 chaînes
//initialisation du tableau
tabMois[1] = "Jan";tabMois[2] =
"Feb";tabMois[3] = "Mar";
tabMois[4] = "Apr";tabMois[5] =
"May";tabMois[6] = "Jun";
tabMois[7] = "Jul";tabMois[8] =
"Aug";tabMois[9] = "Sep";
tabMois[10] = "Oct";tabMois[11] =
"Nov";tabMois[12] = "Dec";
//Découpage de la date et
heure reçue.
sJour = ExtraitChaîne(ExtraitChaîne(HeureLocale,2,",")[[2 A]],1," ")
sMois = ExtraitChaîne(ExtraitChaîne(HeureLocale,2,",")[[2 A]],2," ")
sMois = TableauCherche(tabMois,tcLinéaire,sMois)
SI Taille(sMois) = 1
ALORS sMois="0"+sMois
sAnnée = ExtraitChaîne(ExtraitChaîne(HeureLocale,2,",")[[2 A]],3," ")
sHeure = ExtraitChaîne(ExtraitChaîne(HeureLocale,2,",")[[2 A]],4," ")
sDécalage = ExtraitChaîne(ExtraitChaîne(HeureLocale,2,",")[[2 A]],5," ")
//Analyse du déclage
horaire.
//sDécalage contient GMT ou
+0200
// SI GMT, pas de
décalage
SI sDécalage = "GMT"
ALORS
//Renvoi de la date et
l'heure au format JJ/MM/AAAA HH:MM:SS
sDate = sJour+"/"+sMois+"/"+sAnnée+" "+sHeure
SINON
//Décalage à réaliser
+0200 = + 2H
SI sDécalage[[1]] = "+"
ALORS
eDécalage = 1
SINON
eDécalage = -1
FIN
sDécalage = sDécalage[[2 A]]
//Renvoi de la date et
l'heure au format JJ/MM/AAAA HH:MM:SS
sDate = sJour+"/"+sMois+"/"+sAnnée+" "+...
HeureVersChaîne(EntierVersHeure(HeureVersEntier(sHeure[[1 A 2]]+...
sHeure[[4 A 5]]+sHeure[[7 A
8]])+(eDécalage*HeureVersEntier(sDécalage))))
FIN
//Renvoi du
résultat
RENVOYER sDate
######################FormatGMT######################
PROCEDURE FormatGMT(DATE)
sDate est une chaîne = DateDuJour()
dDate est une Date
= DateDuJour()
sJour est une chaîne
sMois est une chaîne
// On trouve le
jour
sJour = DateVersJourEnLettre(sDate)
sJour = Remplace(sJour,"Lundi","Mon")
sJour = Remplace(sJour,"Mardi","Tue")
sJour = Remplace(sJour,"Mercredi","Wed")
sJour = Remplace(sJour,"Jeudi","Thu")
sJour = Remplace(sJour,"Vendredi","Fri")
sJour = Remplace(sJour,"Samedi","Sat")
sJour = Remplace(sJour,"Dimanche","Sun")
// On trouve le
mois
sMois = DateVersMoisEnLettre(sDate)
sMois = Remplace(sMois,"Janvier","Jan")
sMois = Remplace(sMois,"Février","Feb")
sMois = Remplace(sMois,"Mars","Mar")
sMois = Remplace(sMois,"Avril","Apr")
sMois = Remplace(sMois,"Mai","May")
sMois = Remplace(sMois,"Juin","Jun")
sMois = Remplace(sMois,"Juillet","Jul")
sMois = Remplace(sMois,"Août","Aug")
sMois = Remplace(sMois,"Septembre","Sep")
sMois = Remplace(sMois,"Octobre","Oct")
sMois = Remplace(sMois,"Novembre","Nov")
sMois = Remplace(sMois,"Décembre","Dec")
// On construit la
date
SI bHeureEte ALORS
RENVOYER sJour+", "+dDate..Jour+"
"+sMois+" "+dDate..Année+"
"+Gauche(HeureVersChaîne(HeureSys()),8)+" +0200"
SINON
RENVOYER sJour+", "+dDate..Jour+"
"+sMois+" "+dDate..Année+"
"+Gauche(HeureVersChaîne(HeureSys()),8)+" +0100"
FIN
######################FuseauHoraiare################
PROCEDURE PRIVÉE FuseauHoraire(sFormat="*HH:MM")
SYSTEMTIME est une structure
nAnnée est un entier sur 2
nMois est un entier sur 2
nJourSemaine est un entier sur 2
nJour est un entier sur 2
nHeure est un entier sur 2
nMinute est un entier sur 2
nSeconde est un entier sur 2
nMillisecondes est un entier sur 2
FIN
sChaineRetour est une chaîne
MaDateSystème est un SYSTEMTIME
MonHeure est une Heure
nDifférence est un entier
// Appel de l'api pour
récupérer l'heure en GMT
API("kernel32.dll","GetSystemTime",&MaDateSystème)
// Affectation de la variable
de type heure
MonHeure..Heure = MaDateSystème:nHeure
MonHeure..Minute = MaDateSystème:nMinute
MonHeure..Seconde = MaDateSystème:nSeconde
MonHeure..Milliseconde = 0
// Calcul de la différence
entre les deux
nDifférence = HeureDifférence(MonHeure,HeureSys)
// Si la différence est
positive,
SI nDifférence > 0 ALORS
// on est donc en "+" par
rapport à l'heure GMT
sChaineRetour = Remplace(sFormat,"*","+")
SINON
// on est en "-" par
rapport à l'heure GMT
sChaineRetour = Remplace(sFormat,"*","-")
FIN
// On remplace les heures (HH
dans le format) par le nombre d'heures de différence
// Attention la différence
est donnée en millisecondes donc une heure = 360000 ms
sChaineRetour = Remplace(sChaineRetour,"HH",NumériqueVersChaîne(nDifférence/360000, "02d"))
// On remplace les minutes
(MM dans le format) par le nombre de minutes de différence.
// Attention la différence
est donnée en millisecondes donc une minute = 6000 ms
sChaineRetour = Remplace(sChaineRetour,"MM",NumériqueVersChaîne(modulo(nDifférence,360000)/6000,
"02d"))
// Ici sChaineRetour =
"+01:00"
Info(sChaineRetour)