Avatar billede crapman Nybegynder
14. januar 2004 - 14:04 Der er 25 kommentarer og
1 løsning

Timestamp formatering

Hejsa, jeg har en række timestamps som jeg gerne vil have skrevet på en bestemt måde....

De er alle integers, og nogle hedder eks. 5 hvor andre hedder 2,5 (og derfor er det samme som 2 og en halv time)...

Nu vil jeg så gerne have skrevet alle timer ud, så der står eks. 2:30 i stedet for 2,5... Altså time:minut

Mvh Peter
Avatar billede avlund Nybegynder
14. januar 2004 - 14:07 #1
Du kan da ikke have en integer der hedder 2,5..?
Avatar billede crapman Nybegynder
14. januar 2004 - 14:10 #2
Sorry, min fejl.. det er alle text.....
Avatar billede crapman Nybegynder
14. januar 2004 - 14:10 #3
...men er der en mere optimal en??
Avatar billede avlund Nybegynder
14. januar 2004 - 14:15 #4
Tjaeh, du kunne gemme dem som integers og så i halve timer? Altså hvor 2½ time bliver til 5 og 3 timer bliver til 6...

Så kan du så få dem ud på flg. vis:

(hvis var er variablen tallet ligger i)

Response.Write ( var / 2 )
if var mod 2 = 1 then
  Response.Write ":30"
end if

Giver det mening?
Avatar billede crapman Nybegynder
14. januar 2004 - 14:17 #5
hmmm, jah det giver en smule mening... men ville det så ikke være smartest at gemme i minutter??
Avatar billede avlund Nybegynder
14. januar 2004 - 14:20 #6
Det kan du også gøre, kommer an på hvad den laveste enhed du tæller i er.

Hvis var f.eks. er 150 (2½ time fordelt på minutter):

Response.Write ( var / 60 ) & ":" & ( var mod 60 )

De skulle meget gerne udskrive 2:30.
Avatar billede crapman Nybegynder
14. januar 2004 - 14:21 #7
prøver den lige... har forresten set den der mod flere gange... hvad gør den???
Avatar billede crapman Nybegynder
14. januar 2004 - 14:24 #8
Hmm, den virker ikke optimalt....

tidsforbrug = 20
tidsforbrug = ( tidsforbrug / 60 ) & ":" & ( tidsforbrug mod 60 )

Giver: 0,333333333333333:20
Avatar billede avlund Nybegynder
14. januar 2004 - 14:25 #9
Den dividerer de to tal med hinanden og viser "resten". 150 mod 60 betyder f.eks., at den først dividerer tallene (150/60 = 2) og så bagefter returnerer 30, altså tallet der blev til overs fra divisionen. Mod står for modulus.
Avatar billede avlund Nybegynder
14. januar 2004 - 14:25 #10
OK, det er fordi den returnerer det første tal som et heltal istedet for at runde ned. Der er en funktion der forhindrer det, øjeblik.
Avatar billede crapman Nybegynder
14. januar 2004 - 14:26 #11
mkay, jeg er på standby... :)
Avatar billede avlund Nybegynder
14. januar 2004 - 14:29 #12
Prøv at lave "( var / 60 )" om til "Int( var / 60 )". Det burde runde ned.
Avatar billede crapman Nybegynder
14. januar 2004 - 14:39 #13
Det runder lidt for langt ned... hehe, det giver faktisk et 0
Avatar billede avlund Nybegynder
14. januar 2004 - 14:51 #14
Og heller ikke noget efter kolonet?

Så prøv at lave "( tidsforbrug mod 60 )" om til "( ( tidsforbrug + 60 ) mod 60 )". Det burde afhjælpe sådan et problem.
Avatar billede crapman Nybegynder
14. januar 2004 - 15:00 #15
jo, efter kolon'et er det helt korrekt
Avatar billede avlund Nybegynder
14. januar 2004 - 15:10 #16
Jamen, passer det ikke meget godt så? 20 minutter er jo også 0 timer og 20 minutter.
Avatar billede crapman Nybegynder
14. januar 2004 - 15:11 #17
ikke hvis jeg sætter den til 150 minutter...
Avatar billede crapman Nybegynder
14. januar 2004 - 15:14 #18
Nå, jeg fik det selv til at fungere...

tidsforbrug = replace(formatnumber(( tidsforbrug / 60 ), 2), right(formatnumber(( tidsforbrug / 60 ), 2), 3), "")& ":" & ( tidsforbrug mod 60 )

Ved godt det er lidt noget fusk, men det virker... :/
Avatar billede eagleeye Praktikant
14. januar 2004 - 15:25 #19
Timerne er gode nok for at komme fra minutter til 100'dele kan du dividere med 60 og gange med 100.

str = "2:30"
arr = split(str,":")
str = arr(0) & "," & Int(arr(1)*100/60)
Avatar billede crapman Nybegynder
14. januar 2004 - 15:28 #20
hmmm eagleeye.... hvordan skal koden så se ud???
Avatar billede eagleeye Praktikant
14. januar 2004 - 15:28 #21
Som vist
Avatar billede eagleeye Praktikant
14. januar 2004 - 15:30 #22
2:30 kommer sikkert fra en kolonne i databasen og det kan skrive på to linjer og ikke nødvedigvis 3:

arr = split(rs("kolonnenavn"),":")
str = arr(0) & "," & Int(arr(1)*100/60)

Response.Write str
Avatar billede eagleeye Praktikant
14. januar 2004 - 15:45 #23
Hov det omvendt ;))  Det var fra 100'dele til minutter.
Så det bare dividere med 100 og gange med 60, husk der er forskel på at skrive 2,5 og 2,50. 2,5 vil tolkes som 2,05 hvis man ikke laver lidt kode som skifre der er nok 0'er


str = "2,5"
arr = split(str,",")
arr(1) = Left(arr(1)&"0",2)
str = arr(0) & "," & Int(arr(1)*60/100)

Response.Write str
Avatar billede eagleeye Praktikant
14. januar 2004 - 15:48 #24
og så skal "," rettes til ":" i linjen lige før Response.Write og så kan man lige sætte en Right på også sådan den skriver 2:09 og ikke 2:9


str = "2,5"
arr = split(str,",")
arr(1) = Left(arr(1)&"0",2)
str = arr(0) & ":" & Right("0" & Int(arr(1)*60/100),2)

Response.Write str
Avatar billede crapman Nybegynder
15. januar 2004 - 08:38 #25
Heh, var vidst gået hjem igår da du skrev... MEN!!

Jeg er ikke helt med... I min database registrerer jeg antallet af minutter der er brugt på en opgave... Lad os sige 250 minutter. Det er 2½ time...

Nu skal jeg så bare have det vist på en mere brugervenlig måde... Så der ikke står 250 minutter men i stedet 2:30

How?
Avatar billede eagleeye Praktikant
15. januar 2004 - 16:37 #26
Er det ændre?? i spørgsmålet står der "De er alle integers, og nogle hedder eks. 5 hvor andre hedder 2,5"

Men ok fra minutter til timer og minutter:

tal = 250
hours = Int(tal/60)
mins = Right("0" & (tal - hours*60),2)
str = hours & ":" & mins
Response.Write str
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