Conversion de gmt à local et de local à gmt

Soyez le premier à donner votre avis sur cette source.

Snippet vu 21 283 fois - Téléchargée 29 fois

Contenu du snippet

Le code contient 4 fonctions.

Les deux premières fonctions permettent de calculer le jour de changement de date (celui ci s'effectue en hiver le dernier dimanche du mois d'octobre, et en été le dernier dimanche du mois de mars).

Les deux secondes calculent la nouvelle date avec en entrée la date locale pour la convertir en gmt dans la premiere, et le contraire pour la seconde fonction.

Source / Exemple :


'fonctions de determination de la date de changement d'heure pour l'hiver puis pour l'été
function getchgtdatehiver()
	datestart= Year(now)
	for i=31 to 0 step -1
		datearriv= i & "/10/" & datestart

	if Weekday(datearriv) = 1 then
		getchgtdatehiver=datearriv
		exit for
	end if
	next
end function

function getchgtdateete()
	datestart= Year(now)
	for i=31 to 0 step -1
		datearriv= i & "/03/" & datestart

	if Weekday(datearriv) = 1 then
		getchgtdateete=datearriv
		exit for
	end if
	next
end function

'fonction de convertion de gmt en local
Function convFromGMT(TheDate)
TheDate=Cdate(TheDate)

	if TheDate<cdate(getchgtdateete()) then
		
		convFromGMT=DateAdd("h",1,TheDate)
	elseif TheDate>cdate(getchgtdateete()) and TheDate<cdate(getchgtdatehiver()) then
		
		convFromGMT=DateAdd("h",2,TheDate)
	elseif TheDate>cdate(getchgtdatehiver()) then
		
		convFromGMT=DateAdd("h",1,TheDate)
	end if

end function

'fonction de convertion de local en gmt

Function convToGMT(TheDate)
TheDate=Cdate(TheDate)

	if TheDate<cdate(getchgtdateete()) then
		convToGMT=DateAdd("h",-1,TheDate)
	elseif TheDate>cdate(getchgtdateete()) and TheDate<cdate(getchgtdatehiver()) then
		convToGMT=DateAdd("h",-2,TheDate)
	elseif TheDate>cdate(getchgtdatehiver()) then
		convToGMT=DateAdd("h",-1,TheDate)
	end if

end function

Conclusion :


Le principe : je determine d'abord le chgt de date en hiver et en été en partant du 31 jusqu'à arriver à un dimanche.

Une fois determiné, je rajoute(ou j'enlève) 1 h si je suis en hiver, et 2 h si je suis en été.

Si vous avez des remarques n'hésitez pas.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
68
Date d'inscription
samedi 5 mai 2001
Statut
Membre
Dernière intervention
15 mars 2015

ouaip, j'ai enlevé le 2006, car il servait plus à rien, c'était lorsque je n'avais pas encore fait de fonction pr determiner par année le jour de chgmt de date


j'ai aussi enlevé les timevalue inutiles en commentaires, c'est ce que j'utilisais avant que je decouvre la fonction dateadd

Bonne remarque pour les or, Nurgles, et merci de m'avoir fait remarquer quej'avais laissé le 2006, car je l'ai laissé aussi dans mon site mdr
Messages postés
1648
Date d'inscription
samedi 6 novembre 2004
Statut
Modérateur
Dernière intervention
28 avril 2011
2
L'idée est pas mal, et c'est plutôt pratique, mais je penses qu'il y a encore des choses pas très "jolies" :

- Tu mets 2006 en dur dans ta fonction convToGMT() ! (que se passera-t-il quand on sera en 2007 ? :p)
- Ta suite de Else, ElseIF, ... peut être raccourci (avec un Or)
- Que viennent faire les 'TheDate=TheDate+TimeValue("01:00:00") là dedans ?

Nurgle

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.