Avatar billede mrjowns Novice
22. juli 2003 - 16:34 Der er 6 kommentarer og
1 løsning

DatoTid funktion søges

Hej Kodere...

Jeg henter en DateTime fra min database. Den kunne f.eks. se sådan ud: 2003-07-21 01:12:16

Funktionen jeg søger skal returnerer dage, timer, minutter - altså forskellen på datoen hentet fra databasen og Now()

Hvis der det den returnerer ikke er f.eks. hele dage skal der kun stå timer og menutter og ikke: 0 dage 13 timer 29 minutter - kun 13 timer 29 minutter.

Er der nogen der kan hjælpe?
Avatar billede Slettet bruger
22. juli 2003 - 16:45 #1
hvor t er forskellen (now-databasetid)


<%
Function tid(t)

if day(t)>0 then
out=day(t) & " dag"
if day(t)>1 then
out=out & "e"
end if

if hour(t)>0 then
out=out & " " & hour(t) & " time"
if hour(t)>1 then
out=out & "er"
end if

if minute(t)>0 then
out=out & " " & minute(t) & " minut"
if minute(t)>1 then
out=out & "ter"
end if

if second(t)>0 then
out=out & " " & second(t) & " sekund"
if second(t)>1 then
out=out & "er"
end if

tid=out

End Function
%>

hvis det var det du tænkte på???
Avatar billede Slettet bruger
22. juli 2003 - 16:46 #2
hov... der skal selvfølgelig være et end if mere efter hvert afsnit
Avatar billede eagleeye Praktikant
22. juli 2003 - 16:51 #3
Du kan lave en function som denne:


function fTimeCalc(StartTime, FinishTime)
Dim diff, mins, hours, secs
diff = datediff("s",StartTime,FinishTime)
'set the minutes ignoring the remaining fraction
days = int(diff / (60*60*24))
hours = int(diff / (60*60) - days*24)
' set the minutes by using the remaining fraction and multiplying by 60 i.e., .5 * 60 = 30
mins = Int(60*(diff / (60*60) - hours - days*24))
if days > 0 then  str = str & days & " dage "
if days > 0 AND hours > 0 then str = str & hours & " timer "
str = str & mins & " minutter "
'str = str & secs & " sekunder "
fTimeCalc = str
end function



og kalde den sådan her:


strTimeDiff = fTimeCalc(rs("KOLONNE"), Now)
response.write strTimeDiff
Avatar billede mrjowns Novice
22. juli 2003 - 16:52 #4
Hmmm, fortæl mig lige hvad den gør inden jeg tester den, for jeg synes ikke den ser helt rigtig ud ... der mangler noget datediff!

Forklaring

Dato og tid fra db: 2003-07-21 16:56:16

Så skal funktionen returnerer: 1 dag(e) og 2 minutter

Gør den det?
Avatar billede eagleeye Praktikant
22. juli 2003 - 16:53 #5
How der er en fejl i min function hvis dage = 0 skriver den heller ikke timer ud. Brug lige dette styk kode:


function fTimeCalc(StartTime, FinishTime)
Dim diff, mins, hours, secs
diff = datediff("s",StartTime,FinishTime)
'set the minutes ignoring the remaining fraction
days = int(diff / (60*60*24))
hours = int(diff / (60*60) - days*24)
' set the minutes by using the remaining fraction and multiplying by 60 i.e., .5 * 60 = 30
mins = Int(60*(diff / (60*60) - hours - days*24))
if days > 0 then  str = str & days & " dage "
str = str & hours & " timer "
str = str & mins & " minutter "
fTimeCalc = str
end function
Avatar billede Slettet bruger
22. juli 2003 - 16:57 #6
det kræver at man har samme datoformatering... hvis now er 1/6/02 11:45 PM og man har formatteret dbtiden til 06-01-2002 23:45:00, kan man jo have problemer med at finde differense lige meget hvilke funktioner, man bruger.
Avatar billede mrjowns Novice
22. juli 2003 - 17:02 #7
Tak eagleeye...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester