Avatar billede leasing Nybegynder
09. november 2006 - 16:48 Der er 6 kommentarer og
1 løsning

Sum af 2 tidspunkter

Jeg har 2 tidspunkter som jeg skal have lagt sammen. Tidspunkterne ser eksempelvis således ud:
01:00 og 00:30

Hvordan får jeg lagt disse to lagt sammen så det giver 01:30?
Avatar billede hansdam Nybegynder
09. november 2006 - 17:12 #1
Har lige lavet et lille eks på hvordan det kunne gøres:
----------------------------
<%
tid1 = "01:00"
tid2 = "00:30"

Function TimeAdd(time1,time2)

    time1_hour = Hour(time1)
    time1_minut = Minute(time1)

    time2_hour = Hour(time2)
    time2_minut = Minute(time2)
   
    totalhour = time1_hour + time2_hour
    totalminute = time1_minut + time2_minut
    if totalminute > 60 then
        totalhour = totalhour + int(totalminute/60)
        totalminute = totalminute - (60 * int(totalminute/60))
    end if
   
    TimeAdd = totalhour & ":" & totalminute

end function

totaltid = FormatDateTime(TimeAdd(tid1,tid2),vbshorttime)

Response.write totaltid 'Dette kommer til at give 01:30
%>
Avatar billede leasing Nybegynder
09. november 2006 - 22:49 #2
Den køber jeg...den sider lige i skabet.
Nu har jeg et andet problem. Jeg har 2 tidspunkter eks.
tid1 = 08:45
tid2 = 09:00
dem skal jeg have trukket fra hinanden så resultatet bliver negativt -00:15.

Det resultat skal jeg så bruge et andet sted så hvis jeg eventuelt plusser det negative resultat med 01:00 så skal dette jo give 00:45.

Håber virkelig du kan komme med en løsning eller andre selvfølgelig.
Avatar billede hansdam Nybegynder
10. november 2006 - 00:10 #3
Jeg har lavet lidt om, så du også kan trække en tid fra en anden.
Lej lidt med det - det er ikke fuldstændig gennemtestet...
--------------------------------
<%
Function TimeAddSub(time1,time2,addsub) 'addsub - 1 = add - 0 = substract
   
    time1_neg = 0
    if Left(time1,1) = "-" then time1_neg = 1 : time1 = Right(time1,Len(time1)-1)
    time1_hour = Hour(time1)
    if time1_neg then time1_hour = -1*time1_hour
    time1_minut = Minute(time1)
    if time1_neg then time1_minut = -1*time1_minut
   
    time2_neg = 0
    if Left(time2,1) = "-" then time2_neg = 1 : time2 = Right(time2,Len(time2)-1)
    time2_hour = Hour(time2)
    if time2_neg then time2_hour = -1*time2_hour
    time2_minut = Minute(time2)
    if time2_neg then time2_minut = -1*time2_minut
   
    if addsub then
        allminuts = ((time1_hour*60)+time1_minut) + ((time2_hour*60)+time2_minut)
    else
        allminuts = ((time1_hour*60)+time1_minut) - ((time2_hour*60)+time2_minut)
    end if
    totaltime_neg = 0
    if allminuts < 0 then totaltime_neg = 1 : allminuts = allminuts*-1               
    totalhour = int(allminuts/60)
    totalminute = allminuts - (60 * int(allminuts/60))
   
    finishtime = FormatDateTime(totalhour & ":" & totalminute,vbshorttime)
    if totaltime_neg then finishtime = "-" & finishtime               
   
    TimeAddSub = finishtime

end function

tid1 = "-01:30"
tid2 = "01:00"
tid3 = "08:45"
tid4 = "09:00"

Response.write tid1 & " - " & tid2 & " = " & TimeAddSub(tid1,tid2,0) & "<br />"
Response.write tid2 & " - " & tid3 & " = " & TimeAddSub(tid2,tid3,0) & "<br />"
Response.write tid3 & " - " & tid4 & " = " & TimeAddSub(tid3,tid4,0) & "<br />"

Response.write tid1 & " + " & tid2 & " = " & TimeAddSub(tid1,tid2,1) & "<br />"
Response.write tid2 & " + " & tid3 & " = " & TimeAddSub(tid2,tid3,1) & "<br />"
Response.write tid3 & " + " & tid4 & " = " & TimeAddSub(tid3,tid4,1) & "<br /><br /> Dit eksempel:<br />"
tid5 = TimeAddSub(tid3,tid4,0)
Response.write tid3 & " - " & tid4 & " = " & tid5 & "<br />"
Response.write tid5 & " + " & tid2 & " = " & TimeAddSub(tid5,tid2,1)
%>
Avatar billede ldanielsen Nybegynder
10. november 2006 - 12:55 #4
Kan du ikke bare regne i minutter heletiden? Og så lave en enkelt funktion der udskriver ethvert minuttal som NN:NN:


Function writeTime(intMinutes)
  writeTime = Right("0" & Cstr(Int(intMinutes/60)), 2) & ":" & Right("0" & Cstr(intMinutes mod 60)), 2)
end Function
Avatar billede leasing Nybegynder
10. november 2006 - 13:35 #5
Formenlig...
Jeg har dog allerede fået hansdam´s function til at virke og det virker fortræffeligt.
Avatar billede leasing Nybegynder
13. november 2006 - 15:53 #6
Idanielsen> Din function er god. Hvordan skal jeg kunne + eller - 2 tider, for jeg kan se at jeg kan bruge din function også.
Eks.
timer afspadsering primo: 32:20
timer afspadsering denne md: + 12:30
= timer afspadsering ultimo: 44:50
Avatar billede ldanielsen Nybegynder
15. november 2006 - 14:27 #7
Sådan (regn i minutter):

timer afspadsering primo: 1940 min
timer afspadsering denne md: 750 min
= timer afspadsering ultimo: 2690 min

Og i ASP:

Dim intMinutterAfspadseringPrimo, intMinutterAfspadseringDenneMd, intMinutterAfspadseringUltimo

intMinutterAfspadseringPrimo = 1940
intMinutterAfspadseringDenneMd = 750
intMinutterAfspadseringUltimo = intMinutterAfspadseringPrimo + intMinutterAfspadseringDenneMd

Response.Write(writeTime(intMinutterAfspadseringUltimo))


Function writeTime(intMinutes)
  writeTime = Right("0" & Cstr(Int(intMinutes/60)), 2) & ":" & Right("0" & Cstr(intMinutes mod 60)), 2)
end Function


Hvordan håndterer du det hele? Er det en database, og hvis ja, under hvilken form gemmer du tiderne? Som strenge eller datoer eller hvad?
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