07. oktober 2002 - 14:27Der er
7 kommentarer og 3 løsninger
Problem med udregning af tidsrum
Jeg har et problem med udregning af tider. Jeg har brug for at kunne udregne et tidsrum udfra 2 angivet tidspunkter. Jeg kalder en funktion med følgende:
Herunder ses en funktion, som en venlig sjæl tidligere hjalp mig med her på Eksperten. Den fungerer helt fint så længe det første tidspunkt er mindre end det andet. Hvis jeg nu skal udregne tidrummet mellem kl. 22:00 og kl. 02:00, så går det galt.
Kan denne funktion udbygges så den kan tage højde for det?
function TimeCalc(StartTime, FinishTime) Dim diff, mins, hours, secs diff = datediff("s",StartTime,FinishTime) 'set the minutes ignoring the remaining fraction hours = int(diff / (60*60)) ' set the minutes by using the remaining fraction and multiplying by 60 i.e., .5 * 60 = 30 mins = round(60*(diff / (60*60) - hours),0) hours = string(2-len(hours),"0") & hours mins = string(2-len(mins),"0") & mins
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
hbhansen: Det lyder logisk, men hvor vil du placere den i koden? Jeg bruger allerede en datediff i funktionen, men jeg kan ikke lige overskue hvor du vil bruge datoen.
the bma man: Hvorfor vil du lægge x-antal timer til FinishTime?
Jeg bruger selv datediff på følgende måde, og der virker det fint: DateDiff("s",loginTime,logoutTime), hvor loginTime og logoutTime begge er instanser af objektet "Now" (loginTime = Now). Now laver et Date objekt med både dato og tidspunkt, så derfor kan man gøre det på denne måde. I dit eksempel har den kun klokkeslettet, og derfor kan den ikke vide at der skal tælles en dag med. Det du så kan gøre er at lave dit dato objekt med både dato og tid, og så skulle det virke :o)
Som luzk skriver skal du have et data objekt istedet for kun tiden, det gør at den samtidig tjekker på dato og så er du ude over det med 22:00 og 02:00. I koden vil jeg sende to datoer, startDato og slutDato til funktionen istedet for to tider!
Hejsa. Jeg lægger ikke x-antal timer til - men 24. Fordi 02.00 + 24 timer = "klokken 26" fraktrukket kl. 22 = 4 timer - som jo er differencen :-)
Det var for at løse, at din fra-tid er større end slut-tid - hvilket jo indikerer, at vi har rundet midnat - kl. 24. Derfor det magiske tal. Men som jeg skrev - den "nemme" løsning. Hvis det skal virke over mere en eet døgn er du nødt til, som forklaret af en anden, at bruge et dato objekt i stedet for.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.