Autor | Zpráva | ||
---|---|---|---|
mackopu Profil |
#1 · Zasláno: 20. 1. 2011, 15:05:51
Používám funkci
function timeToHours(time) { str = time.split(':'); hod2sec = str[0] * 3600; min2sec = str[1] * 60; sec = str[2]; secsum = hod2sec + min2sec + sec; hodin = secsum / 360000; return hodin; } Jestliže funkce zpracuje řetězec 14:30:24, je vše v pořádku a výstupem je 14.500066666666667 hod.. Při vstupu 14:30:8 to ale vyhodí 1.4500222222222223 hod., což je hloupost. Kde je chyba? |
||
ShiraNai7 Profil |
#2 · Zasláno: 20. 1. 2011, 15:11:58
Zkus:
function timeToHours(time) { str = time.split(':'); hod2sec = parseInt(str[0]) * 3600; min2sec = parseInt(str[1]) * 60; sec = parseInt(str[2]); secsum = hod2sec + min2sec + sec; hodin = secsum / 360000; return hodin; } |
||
mackopu Profil |
#3 · Zasláno: 20. 1. 2011, 15:16:20
ShiraNai7:
Super, to je ono. Jen ještě bylo třeba secsum / 360000 změnit na secsum / 3600. Díky moc! |
||
_es Profil |
#4 · Zasláno: 20. 1. 2011, 15:28:21
Bolo by dobré použiť príkaz var.
ShiraNai7ova funkcia nebude správne fungovať pri úvodných nulách (vysvetlenie). function timeToHours(time) { var s = time.split(':'); return +s[0] + +s[1]/60 + +s[2]/3600; } |
||
mackopu Profil |
#5 · Zasláno: 20. 1. 2011, 15:55:53
Zajímavé. Jak to tedy ošetřit při vstupním řetězci 0:0:3 (tři vteřiny po půlnoci)?
|
||
_es Profil |
#6 · Zasláno: 20. 1. 2011, 16:14:49 · Upravil/a: _es
mackopu:
Myslel som to, že ak by v tom formáte bolo napríklad 09 , že by to tie hodiny zle zrátalo.
Funkcia, ktorú som napísal, by tento prípad mala vyrátať správne. Síce si písal, že úvodné (doplnené) nuly tam nemáš, no predsa len by to malo fungovať všeobecnejšie. |
||
mackopu Profil |
#7 · Zasláno: 20. 1. 2011, 16:19:11
_es:
Už jsem si s tím hrál, a zdá se, že parseInt(str[0], 10) |
||
_es Profil |
#8 · Zasláno: 20. 1. 2011, 16:41:06
mackopu:
„… to řeší …“ to rieši aj moja, oveľa kratšia funkcia. |
||
Časová prodleva: 13 let
|
0