Hei !
Yritän saada konvertoitua x määrän sekunteja muotoon:
x paivaa x tuntia x minuuttia x sekuntia
Eli jos sekunteja olisi 100000, niin saataisiin tulokseksi:
1 paivaa 3 tuntia 46 minuuttia 40 sekuntia
Mutta jos sekunteja olisi vaikkapa 80, niin silloin saataisiin tulokseksi
1 minuutti 20 sekuntia
Eli näytettäisiin vain minuutit ja sekunnit. Ei niin, että 0 paivaa 0 tuntia 1 minuutti 20 sekuntia.
Nyt lasken ajan näin:
var aika = 100000; var paivat; var tunnit; var minuutit; var sekunnit; paivat = (aika / 86400); tunnit = (aika / 3600) - (paivat * 24); minuutit = (aika / 60) - ((paivat * 1440) - (tunnit *60)); sekunnit = (aika % 60);
Mutta nyt tulos on muotoa:
paivat: 1.1574074074074074 tunnit: 0 tunnit: 0 sekunnit: 40
Eli jumituin nyt tähän?
Voisiko joku neuvoa, että miten saisin tämän toimimaan kuvaamallani tavalla.
Jos sekunteja on 120, pitääkö näyttää "2 minuuttia 0 sekuntia" vai "2 minuuttia"?
Siis pitääkö näyttää kaikki ajanyksiköt ensimmäisestä ei-nollasta lähtien vai kaikki ei-nollat ajanyksiköt?
Hei Antti.
Ehkä on selvemmän näköistä, että näytettäisiin ajanyksiköt ensimmäisestä ei-nollasta lähtien.
Eli 2 minuuttia 0 sekuntia
Tuossa on minun ehdotukseni:
function aika(sek) { suhteet = [86400, 3600, 60, 1] nimet1 = ["päivä", "tunti", "minuutti", "sekunti"] nimet2 = ["päivää", "tuntia", "minuuttia", "sekuntia"] alku = false; teksti = ""; for (i = 0; i < 4; i++) { tulos = Math.floor(sek / suhteet[i]); sek = sek % suhteet[i]; if (tulos != 0 || alku) { if (teksti != "") teksti += " "; teksti += tulos + " "; if (tulos == 1) { teksti += nimet1[i]; } else { teksti += nimet2[i]; } alku = true; } } if (teksti == "") teksti = "0 sekuntia"; return teksti; } alert(aika(12345));
Kiitos paljon antti. Tämähän toimii kuin unelma!
Aihe on jo aika vanha, joten et voi enää vastata siihen.