Voici une petite procédure qui permet de connaitre le plus court nombre de centièmes de différence entre deux heures.

A la différence de HeureDifférence(hHeureDeb,hHeureFin), la procédure renvoi le nombre minimal de centièmes entre les deux heures.

Si hHeureDeb = 2359 et hHeureFin = 0001, la procédure renverra 12000 soit 2 minutes alors que HeureDifférence renverra -8628000 soit -23H58.

Si hHeureDeb = 0001 et hHeureFin = 2359, la procédure renverra -12000 soit -2 minutes.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
PROCEDURE Get_NbCentiemesDiff(hHeureDeb est une Heure,hHeureFin est une Heure)
 
//Renvoie le plus court nombre de centièmes de différence entre 2 heures
 
//Nb de centièmes de secondes dans une journée
iNbCentiemesJour est un entier = 8640000
iNbCentiemesDemiJour est un entier = 4320000
iNbCentiemes est un entier
 
hHeureMinuit est une Heure = 0000
 
iNbCentiemes = HeureDifférence(hHeureDeb,hHeureFin)
SI Abs(iNbCentiemes) > iNbCentiemesDemiJour ALORS
	SI iNbCentiemes < 0 ALORS
		iNbCentiemes = iNbCentiemesJour-Abs(iNbCentiemes)
	SINON
		iNbCentiemes = (iNbCentiemesJour-Abs(iNbCentiemes))*-1
	FIN	
FIN
 
RENVOYER iNbCentiemes
Cela permet de résoudre le problème :
Si hHeureDeb = 2358 et hHeureFin = 0000 et HeureSys() = 2359, le code suivant ne fonctionne pas, pourtant l'heure courante est bien comprise entre les deux heures de test.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
SI HeureSys() > hHeureDeb et HeureSys() < hHeureFin ALORS
.....
FIN
Ce code permet de savoir si une heure est comprise dans une plage horaire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
iNbCentiemes est un entier
iNbCentiemes = Abs(Get_NbCentiemesDiff(hHeureDeb,hHeureFin))
 
iNbCentiemes2 est un entier
iNbCentiemes2 = Get_NbCentiemesDiff(hHeureDeb,HeureSys())
 
SI iNbCentiemes >= iNbCentiemes2 ET iNbCentiemes2 >= 0 ALORS
	Trace("Heure comprise dans la plage horaire !")
SINON
	Trace("Heure en dehors de la plage horaire !")
FIN
Bonne prog