begin process at 2008 08 29 01:18:23
1 233 465 membres
8 nouveaux aujourd'hui
14 291 membres club

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

    Aucun commentaire pour le moment.

Ajouter un commentaire

Pub



Appels d'offres

Recherche developpeur ...
Budget : 700€
SITE MARCHAND LOCATION...
Budget : 3 000€
SITE MARCHAND POUR HOTEL
Budget : 4 000€

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS