Avatar billede mtas Nybegynder
25. august 2002 - 11:32 Der er 11 kommentarer og
1 løsning

Datediff men hvor'n ??

Hej!

Jeg har lidt problemer med at finde ud af hvor manger timer, minutter og sekunder siden der sidst er blevet lagt en besked i et forum.

Min nuværende kode er:
strDiffNow = Now
strDiffH = datediff("h", strSt, strDiffNow)
strDiffM = datediff("n", strSt, strDiffNow)
strDiffS = datediff("s", strSt, strDiffNow)

strStView = strDiffH & " - " & strDiffM & " - " & strDiffS


Men den udskiver bare noget i stil med 0 - 20 - 1241  og det er jo ikke smart at den skriver 1241 sekunder vel..

HEEELP!!!!
Avatar billede eagleeye Praktikant
25. august 2002 - 11:38 #1
Du er nød til selv at lave en function som regner det ud i timer minutter og sekuner, jeg har lavet denne function :

sStartTime = "24-12-2002 14:00:00"
sEndTime = "25-12-2002 16:23:15"
sTimeDiff = TimeCalc("database", sStartTime, sEndTime)


--- og selv functionen:

function TimeCalc(Display, 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)
secs = round(diff - ((60*60)* hours) - (60 * mins),0)
hours = string(2-len(hours),"0") & hours
mins = string(2-len(mins),"0") & mins
secs = string(2-len(secs),"0") & secs
' how do we want to return the calculation..?
select case lcase(Display)
  case "screen"
    TimeCalc = hours & " hours and " & mins & " minutes"
  case "database"
    TimeCalc = hours & ":" & mins & ":" & secs
end select
end function
Avatar billede mtas Nybegynder
25. august 2002 - 11:43 #2
eagleeye > Jo meget muligt, men hvad hjælper det når det ikke virker...

>> "The page cannot be displayed" <<

Jeg aner jo ikke hvordan jeg skal tilpasse den til min...HELP!
Avatar billede eagleeye Praktikant
25. august 2002 - 11:45 #3
Lig funcvtion i bunden af din kode

og der hvor du skal bruge tiden.

Response.write TimeCalc("database", strSt, Now)


Jeg er nød til at smutte håber du kan få det til at virker :)
Avatar billede eagleeye Praktikant
25. august 2002 - 11:46 #4
Eller så prøv at lave dette eks:

<html>
<body>
<%
sStartTime = "24-12-2002 14:00:00"
sEndTime = "25-12-2002 16:23:15"
Response.write "Tiden er : " & TimeCalc("database", sStartTime, sEndTime)
%>
</body>
</html>
<%
function TimeCalc(Display, 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)
secs = round(diff - ((60*60)* hours) - (60 * mins),0)
hours = string(2-len(hours),"0") & hours
mins = string(2-len(mins),"0") & mins
secs = string(2-len(secs),"0") & secs
' how do we want to return the calculation..?
select case lcase(Display)
  case "screen"
    TimeCalc = hours & " hours and " & mins & " minutes"
  case "database"
    TimeCalc = hours & ":" & mins & ":" & secs
end select
end function
%>
Avatar billede mtas Nybegynder
25. august 2002 - 11:49 #5
NÆÆÆH! Virker ikke...
Avatar billede mtas Nybegynder
25. august 2002 - 12:05 #6
Okay nu har jeg ligesom fået den til at virke men et eller andet sted er der altså en fejl fordi nogen gange kommer der en string fejl og bagefter så viser den MINUS tal og går op til 00 og så virker den...
SÅååå du skal ligesom lige have den rettet lidt til tror jeg !!
Avatar billede _just4fun_ Nybegynder
25. august 2002 - 12:23 #7
Du skal bare lade være med at tælle dobbelt...  = når du har talt timerne med under timer, skal de ikke tælles med under minutter!

strDiffH = datediff("h", strSt, strDiffNow)
strDiffM = datediff("n", dateadd("h", strDiffH, strSt), strDiffNow)

osv....
Avatar billede mtas Nybegynder
25. august 2002 - 13:29 #8
_just4fun_  > Nu har jeg godt nok sagt OK for dit svar da det virker, men har dog lidt problemer med at få udregnet sekunderne !!!

Hvordan det ??
Avatar billede _just4fun_ Nybegynder
25. august 2002 - 13:53 #9
Lidt mere overskueligt:
'* Start med et eller andet tidspunkt

strDiffH = datediff("h", strSt, strDiffNow)

'* læg timerne til det opringelige tidspunkt og brug det nye punkt som startpunkt.
strSt = dateadd("h", strDiffH, strSt)
strDiffM = datediff("n", strSt , strDiffNow)

'* læg minutterne til forrige tidspunkt og brug det nye punkt som startpunkt.
strSt = dateadd("n", strDiffM, strSt)
strDiffS = datediff("s", strSt, strDiffNow)
Avatar billede mtas Nybegynder
25. august 2002 - 14:15 #10
ØØhh den med sekunder virker altså ikke 100%

Nogen gange for jeg et minus tal - why ???
Avatar billede _just4fun_ Nybegynder
25. august 2002 - 14:18 #11
... Fordi tiden ikke er synkroniseret mellem databasen og ASP?
Avatar billede mtas Nybegynder
25. august 2002 - 14:22 #12
hvad mener du ??

ICQ: 121911437
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