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.