Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
CALCULER LE NOMBRE D'HEURES DE NUITS D'UN CRÉNEAU HORAIRE
Information sur la source
Description
Bonjour à tous Les fonctions temvern et nvertem sont les mêmes que dans l'une des contrib que j'avais postée qui s'appelle dift http://www.atoutfox.org/articles.asp?ACTION=FCONSULTER&ID=0000000066 Ici il s'agit de calculer le nombre d'heures de nuits, en partant d'une heure de début et une heure de fin Heuredeb et heurfin sont en caractère "HH:MM:SS" ex toto=heuresnut("10:00:00","23:00:00","22:00","07:00") retournera "01:00:00" A Améliorer : Des tests en entrée de fonction, afin de s'assurer que les paramètres sont bien en texte Bonne journée à tous Eric
Source
- function heuresnuit
- parameters hdeb,hfin,debnuit,finnuit
- **
- ** toto= heuresnuit(heurdeb, heurfin,"22:00","07:00")
- local retour,minuitdeb,minuitfin,hdeb,hfin;debnuit,finhuit,hfin31,retour
- minuitdeb=temvern("00:00")
- minuitfin=temvern("24:00")
- hdeb=temvern(left(hdeb,5))
- hfin=temvern(left(hfin,5))
- debnuit=temvern(debnuit)
- finnuit=temvern(finnuit)
- hfin31= minuitfin+finnuit
- retour=nvertem(0)
- do case
- case between(hdeb,debnuit,minuitfin) .and. between(hfin,debnuit,minuitfin)
- retour=nvertem(hfin-hdeb)
- case between(hdeb,minuitdeb,finnuit) .and. between(hfin,minuitdeb,finnuit)
- retour=nvertem(hfin-hdeb)
- case between(hdeb,debnuit,minuitfin) .and. between(hfin,minuitdeb,finnuit)
- retour=nvertem((minuitfin-hdeb)+hfin-minuitdeb)
- case between(hfin,debnuit,minuitfin) .and. hdeb <debnuit
- retour=nvertem(hfin-debnuit)
- case between(hfin,minuitdeb,finnuit) .and. hdeb <debnuit
- retour=nvertem(hfin-minuitdeb+ (minuitfin-debnuit))
- case hfin > finnuit .and. hfin<debnuit .and. between(hdeb,minuitdeb,finnuit)
- retour=nvertem(finnuit-hdeb)
- case hfin > finnuit .and. hfin<debnuit .and.between(hdeb,debnuit,minuitfin)
- retour=nvertem((finnuit-minuitdeb)+(minuitfin-hdeb))
- case hdeb<debnuit .and. hfin>finnuit .and. hfin<hdeb
- retour=nvertem((finnuit-minuitdeb)+(minuitfin-debnuit))
- case between(hfin,minuitfin,hfin31) .and. between(hdeb,debnuit,minuitfin)
- retour = nvertem(hfin-minuitfin +(minuitfin-hdeb))
- case between(hfin,minuitfin,hfin31).and. hdeb< debnuit .and. hdeb > finnuit
- retour = nvertem(hfin-minuitfin +(minuitfin-debnuit))
- case between(hfin,minuitfin,hfin31).and. hdeb< debnuit .and. hdeb <= finnuit
- retour = nvertem(hfin-minuitfin -(hdeb-minuitdeb))
-
-
- *-
- case hfin > hfin31 .and. between(hdeb,debnuit,minuitfin)
- retour = nvertem(finnuit-minuitfin +(minuitfin-hdeb))
- case hfin > hfin31 .and. hdeb< debnuit
- retour = nvertem(minuitfin-debnuit +(minuitfin-debnuit))
-
-
-
-
- endcase
- return righ(retour,5)+":00"
-
-
-
-
- function temvern
- parameters temp1
- temp1=alltrim(temp1)
- local s,m,h
- s=substr(temp1,len(temp1)-1,2)
- s=val(s)
- m=substr(temp1,len(temp1)-4,2)
- m=val(m)*60
- h=substr(temp1,1,len(temp1)-6)
- h=val(h)*3600
- retour=h+m+s
- return retour
-
-
- function nvertem
- parameters temp1
- local s,m,h
- h=int(temp1/3600)
- resth=mod(temp1,3600)
-
- m=int((resth)/60)
- restm=mod(m,60)
-
- s=int(mod(resth,60))
-
-
- return padl(h,5,"0")+":"+padl(m,2,"0")+":"+padl(s,2,"0")
-
function heuresnuit
parameters hdeb,hfin,debnuit,finnuit
**
** toto= heuresnuit(heurdeb, heurfin,"22:00","07:00")
local retour,minuitdeb,minuitfin,hdeb,hfin;debnuit,finhuit,hfin31,retour
minuitdeb=temvern("00:00")
minuitfin=temvern("24:00")
hdeb=temvern(left(hdeb,5))
hfin=temvern(left(hfin,5))
debnuit=temvern(debnuit)
finnuit=temvern(finnuit)
hfin31= minuitfin+finnuit
retour=nvertem(0)
do case
case between(hdeb,debnuit,minuitfin) .and. between(hfin,debnuit,minuitfin)
retour=nvertem(hfin-hdeb)
case between(hdeb,minuitdeb,finnuit) .and. between(hfin,minuitdeb,finnuit)
retour=nvertem(hfin-hdeb)
case between(hdeb,debnuit,minuitfin) .and. between(hfin,minuitdeb,finnuit)
retour=nvertem((minuitfin-hdeb)+hfin-minuitdeb)
case between(hfin,debnuit,minuitfin) .and. hdeb <debnuit
retour=nvertem(hfin-debnuit)
case between(hfin,minuitdeb,finnuit) .and. hdeb <debnuit
retour=nvertem(hfin-minuitdeb+ (minuitfin-debnuit))
case hfin > finnuit .and. hfin<debnuit .and. between(hdeb,minuitdeb,finnuit)
retour=nvertem(finnuit-hdeb)
case hfin > finnuit .and. hfin<debnuit .and.between(hdeb,debnuit,minuitfin)
retour=nvertem((finnuit-minuitdeb)+(minuitfin-hdeb))
case hdeb<debnuit .and. hfin>finnuit .and. hfin<hdeb
retour=nvertem((finnuit-minuitdeb)+(minuitfin-debnuit))
case between(hfin,minuitfin,hfin31) .and. between(hdeb,debnuit,minuitfin)
retour = nvertem(hfin-minuitfin +(minuitfin-hdeb))
case between(hfin,minuitfin,hfin31).and. hdeb< debnuit .and. hdeb > finnuit
retour = nvertem(hfin-minuitfin +(minuitfin-debnuit))
case between(hfin,minuitfin,hfin31).and. hdeb< debnuit .and. hdeb <= finnuit
retour = nvertem(hfin-minuitfin -(hdeb-minuitdeb))
*-
case hfin > hfin31 .and. between(hdeb,debnuit,minuitfin)
retour = nvertem(finnuit-minuitfin +(minuitfin-hdeb))
case hfin > hfin31 .and. hdeb< debnuit
retour = nvertem(minuitfin-debnuit +(minuitfin-debnuit))
endcase
return righ(retour,5)+":00"
function temvern
parameters temp1
temp1=alltrim(temp1)
local s,m,h
s=substr(temp1,len(temp1)-1,2)
s=val(s)
m=substr(temp1,len(temp1)-4,2)
m=val(m)*60
h=substr(temp1,1,len(temp1)-6)
h=val(h)*3600
retour=h+m+s
return retour
function nvertem
parameters temp1
local s,m,h
h=int(temp1/3600)
resth=mod(temp1,3600)
m=int((resth)/60)
restm=mod(m,60)
s=int(mod(resth,60))
return padl(h,5,"0")+":"+padl(m,2,"0")+":"+padl(s,2,"0")
Sources de la même categorie
Commentaires
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | | | | 1 | 2 | 3 |
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|