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.
Cela permet de résoudre le problème :
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
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.
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 SI HeureSys() > hHeureDeb et HeureSys() < hHeureFin ALORS ..... FIN
Bonne prog
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
Partager