#################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)