AccueilCodes sourcesFreewaresArticlesRéponsesRechercheVotre avisNewsMon blogLiensContact
Mardi 04 Novembre 2025

Valid HTML 4.01 Transitional

126 codes sources48 articles77 news24 Liens15 avis9 réponses.
Comment gérer des heures au format GMT ?

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




 

 

Liste des codes sources
®2006 - codel5g.com