webForumDet fria alternativet
Logga in / Bli medlem

Sekunder till timmar, minuter och sekunder.

Programmering

9 svar · 949 visningar · startad av Fredde Mannen

Medlem sedan nov. 20014 054 inlägg
Frågan#1

Rent matematiskt hur skulle du ställa upp 2345 sek så att det blir timmar, minuter och sekunder??

Medlem sedan juni 20014 290 inlägg
#2

Enkelt.

tim = tal / 3600, om nödvändigt ta bort decimalerna
min = (tal - (tim*3600)) / 60, om nödvändigt ta bort decimalerna
sek =tal - tim*3600 - min*60

Medlem sedan nov. 20014 054 inlägg
#3

GunnarD skrev:

Enkelt.

tim = tal / 3600, om nödvändigt ta bort decimalerna
min = (tal - (tim*3600)) / 60, om nödvändigt ta bort decimalerna
sek =tal - tim*3600 - min*60

oki.

Medlem sedan nov. 20014 054 inlägg
#4

Så enligt formeln:

tim = tal / 3600, om nödvändigt ta bort decimalerna
min = (tal - (tim*3600)) / 60, om nödvändigt ta bort decimalerna
sek =tal - tim*3600 - min*60

så får vi.. genom att använda 2304 sekunder

Så bör jag få:

timmar = 0,64 <- Timmar, 0,64???
minuter = 0
sekunder = 0

Men timmar 0,64!

OBS! Minuter och sekunder är avrundade till närmaste heltal.

Medlem sedan nov. 20014 054 inlägg
#5

Fick denna formel av en annan kille:

hours = numsec / 3600;
numsec = numsec % 3600;
minutes = nmumsec / 60;
seconds = numsec % 60;

Om det nu är C++ eller PHP eller nåt annat det är en sak... men vad menas med % <- detta tecken..

Medlem sedan juni 200032 967 inlägg
#6

Det borde väl betyda modulus, dvs rest vid heltalsdivision.

Medlem sedan nov. 20014 054 inlägg
#7

okey...

Men min andra formel som jag fick funkade fint, men att den fortfarande ger timmar i i decimalform??

Dom om jag har 1200 sek så får jag 0,33 timmar och 20 minuter och 0 sekunder...

confused!!! :q

Medlem sedan nov. 20014 054 inlägg
#8

Okey... tog bort det efter decimalerna och då funkade det bättre! :)

Medlem sedan juni 20014 290 inlägg
#9

> timmar = 0,64 <- Timmar, 0,64???

Riktigt, så tar man bort decimalerna så blir timmar 0 (1 timme är 3600 sekunder)

> minuter = 0

min = (2304 - (0*3600))/60 = 38,4

> sekunder = 0

sek = 2304 - 0*3600 - 38*60 = 24

2304 sekunder = 0 timmar, 38 minuter och 24 sekunder.

Medlem sedan dec. 20003 887 inlägg
#10

Det här kan tyckas vara ett långt svar, men jag tror att det förklarar det mesta :)

Fredde Mannen skrev:

okey...

Men min andra formel som jag fick funkade fint, men att den fortfarande ger timmar i i decimalform??

Dom om jag har 1200 sek så får jag 0,33 timmar och 20 minuter och 0 sekunder...

confused!!! :q

1200 sekunder av en timme (=3600 sekunder) är en tredjedels timme (1200/3600 = 1/3) d.v.s. 20 minuter. Det matematiska svaret 0.3 (strecket ska vara ovanför trean och betyder upprepning) timmar är således helt korrekt, även om det nu blir oändligt många treor efter kommat. Svaret att 1200 sekunder är detsamma som en tredjedels timme och 20 minuter alltså helt fel (svaret borde ha varit 0.33 timmar eller 20 minuter eller 1200 sekunder).

Problemet är att du räknar här med tid och inte tal, som vi vanligtvis gör. (1 timme = 60 minuter, 1 minut = 60 sekunder. Överförklarat så är 10 timmar inte detsamma som 100 minuter, utan 600 minuter.)

[u][b]Formel[/b][/u]
antaltimmar(h) = 0
antalminuter(m) = 0
antalsekunder(s) = 4567
sekunderkvar(sk) = s

1. Medan sk är större än 3600
  1.1 öka h med ett
  1.2 minska sk med 3600
  1.3 upprepa
2. m = sk
3. Medan sk är större än 60
  3.1 öka m med ett
  3.2 minska sk med 60
  3.3 upprepa
4. s = sk

En körning...

h = 0 + 1
sk = 4567 - 3600
m = 967
m = 0 + 1
sk = 967 - 60
m = 1 + 1
[i]osv...[/i]
m = 15 + 1
sk = 67 - 60
s = 7

4567 sekunder = 1 timme, 16 minuter och 7 sekunder
378 ms totalt · 4 externa anrop · v20260731065814-full.5386d3bf
121 ms — deklarationer (db)
118 ms — hämta statistik (db)
134 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)