Avatar billede xing Novice
25. august 2005 - 11:03 Der er 14 kommentarer og
1 løsning

3 tider

Den første tid er

tid_A = "00:24:00"

tid_B = "00:44:00"

tid_C Vil jeg gerne have skal blive = "00:20:00", hvordan?
Avatar billede busschou Praktikant
25. august 2005 - 11:26 #1
hvis det kun er sådan og der ikke er timer og sekunder så kan du bare splitte den op
---
tid_A = "00:24:00"
tid_B = "00:44:00"
tid_C = split(tid_B,":")(1) - split(tid_A,":")(1)
---
Men det er ikke så super dynamisk ;o)
Kig evt på DateDiff som kan finde forskelleni dage, timer, minutter osv mellem to datoer
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctdatediff.asp
og timevalue som laver din tid om til et dato format
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcttimevalue.asp
eller evt timeserial eller dateserial, som begge benyttes til at lave dato formater
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfcttimeserial.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/vsfctdateserial.asp
---
Når først du har lavet dine tider om til et dato format så benyt DateDiff til at finde forskellen :o)
Avatar billede xing Novice
25. august 2005 - 11:42 #2
Nu er jeg kommet lidt længere!

tid_A = "00:24:00"
tid_B = "00:44:00"

sek = DateDiff("s", tid_A, tid_B)
min = DateDiff("n", tid_A, tid_B)
timer = DateDiff("h", tid_A, tid_B)

tid_C = timer & ":" & min & ":" & sek

Hvordan for jeg så regnet sek ned til at blive "00"?
og
Hvordan for jeg så regnet min til at blive "20"?
Avatar billede busschou Praktikant
25. august 2005 - 12:28 #3
jamen er din timer og sekunder ikke lig nul og din min lig 20 i ovenstående?
Avatar billede xing Novice
25. august 2005 - 13:26 #4
timer bliver til 00
min bliver til 20
sek bliver til 1200

Jeg vil gerne have det sådan "00:20:00"

Og ikke "00:20:1200"
Avatar billede roenving Novice
25. august 2005 - 13:31 #5
Så skal du jo trække det foran fra:

tid_C = timer & ":" & (min-timer*60) & ":" & (sek-min*60)
Avatar billede busschou Praktikant
25. august 2005 - 15:34 #6
sorry var lige lidt væk, mon du har fået det til at virke?
Du får jo samme problem hvis du har over en times forskel, så vil minutterne tilsvarende indeholde en faktor 60, så jeg vil foreslå du nøjes med at hive sekunderne ud og så regner på dem
Det her virker for mig
---
<%
a = "00:24:03"
b = "01:44:06"
s = datediff("s",a,b)
t = formatnumber(s/3600,0)
s = s mod 3600
m = formatnumber(s/60,0)
s = s mod 60
forskel = t &":"& m &":"& s
response.write forskel
%>
Avatar billede xing Novice
26. august 2005 - 09:40 #7
Jeg for nogle fejl i de oplysninger som kommer ud nogle gange!

Nogle gange er der et minut for meget!...hmmm

Kan det tænkes at den nogle gange runder m op?
Avatar billede busschou Praktikant
26. august 2005 - 10:31 #8
hmm jeg brugte nu bevist formatnumber som hverken burde runde op eller ned men blot siger at der skal være nul decimaler
Men det er da muligt jeg måske har kvajet mig alligevel :o/
Kan du give et eksempel på to tider som giver fejl?
Avatar billede xing Novice
26. august 2005 - 11:44 #9
00:17:15
00:21:13

Det giver 00:04:58

Men det rigtige er 00:03:58
Avatar billede xing Novice
26. august 2005 - 11:47 #10
Så kunne man måske skrive

if s>30 then
  m=m-1
end if

Det vil jeg prøve i aften :-)
Avatar billede roenving Novice
26. august 2005 - 11:49 #11
Kan man ikke i vbscript bruge heltalsdivision ?-)

s = datediff("s",a,b)
t = s\3600
s = s mod 3600
Avatar billede busschou Praktikant
26. august 2005 - 11:53 #12
hmm mig som huskede forkert, formatnumber runder op, Int og Fix runder ikke af, pånær hvis tallet er megativt
Men roenving har ret
Jeg huskede det som at s/3600 altid ville give et helt tal, men det gjorde det ikke og derfor rettede jeg til. Men det er rigtig hvis du tager s\3600 så får du heltallet
Avatar billede roenving Novice
26. august 2005 - 12:00 #13
-- og så forkorte koden til:

<%
a = "00:24:03"
b = "01:44:06"
s = datediff("s",a,b)
forskel = s\3600 &":"& (s mod 3600)\60 &":"& s mod 60
response.write forskel
%>
Avatar billede busschou Praktikant
26. august 2005 - 12:03 #14
det går så ikke godt, for du tilretter ikke s :o) så skulle det være
<%
a = "00:24:03"
b = "01:44:06"
s = datediff("s",a,b)
forskel = s\3600 &":"& (s mod 3600)\60 &":"& (s mod 3600) mod 60
response.write forskel
%>
Avatar billede busschou Praktikant
26. august 2005 - 12:04 #15
lol hvilket selvfølgelig er det samme da 60 går op i 3600 :oP
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